목표: 하나의useRef
로 현재 Grid 데이터 저장하기
의도: 반복문으로 감싸진 Grid 컴포넌트에useRef
를 각각 세팅하기가 어려워서, 하나의useRef
를 통해 여러 Grid 데이터를 관리하고 저장할 수 있도록 하고 싶었다
기능: Grid 추가 버튼을 누르면 Grid 가 추가되고 - 사용자가 Grid 내용을 변경하면 - 변경한 값을 저장한다
방법:useRef
초기값을null
이 아닌[]
(빈 배열) 로 세팅하여, 하나의useRef
로 여러 Grid 데이터를 관리한다
부모 컴포넌트
const gridRef = useRef<any>([])
export const Parent = () => {
return (
배열.map((item, idx) => (
<div key={idx}>
<ChildGrid
idx={idx}
gridRef={gridRef}
/>
</div>
))
)
}
gridRef
에 빈 배열을 할당한다<ChildGrid/>
는 반복문으로 감싸져 있는데, 현재item
의 index 를 파악하기 위해idx
를 props 로 전달했다
자식 컴포넌트
export const ChildGrid = () => {
return (
<Grid
ref={(el: any) => gridRef.current[idx] = el}
rowData={rowData}
columnDefs={gridColumnDefList}
sizeColumnsToFit={false}
gridOptions={gridOptions}
treeData={true}
getDataPath={getDataPath}
suppressRowClickSelection
/>
)
}
ref={(el: any) => gridRef.current[idx] = el}
- 위 코드처럼, 빈 배열의
gridRef
값에 요소를 하나씩 할당해 주는 식으로 작성하면 된다
데이터 저장하기
let changedGridData: any = []
changedGridData = JSON.parse(JSON.stringify(배열))
배열.map((_item, idx) => {
changedGridData[idx] = gridRef.current[idx].forEachNode()
})
- [참고]
forEachNode()
는 Grid 데이터를 추출할 수 있는 ag-grid api 이다 - (여러개의 Grid 값을 저장하기 위해) 반복문을 돌려, 각 Grid 값을
gridRef.current[idx].forEachNode()
로 추출하여changedGridData
에 저장한다 changedGridData
는 Grid 를 저장하는 api 에 파라미터로 실어 보낸다
728x90
'간단 기록' 카테고리의 다른 글
[Next.js] 확장성 높은 Layout 컴포넌트 구축하기 (0) | 2024.07.21 |
---|---|
[React] 새 창에서 동일한 세팅 값 유지하도록 하기 (URL query string 활용) (1) | 2024.06.10 |
[Next.js] window.innerWidth 가져오는 커스텀 훅 만들기 (0) | 2023.06.18 |
[FE] 답글 화면 구현하기 (+재귀함수) (feat. React) (0) | 2023.04.02 |
댓글