HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🚀
개발 노트
/
🌡️
React.cloneElement
🌡️

React.cloneElement

 

소개

React.cloneElement( element, [config], [...children] )
 
  • 새로운 React 엘리먼트를 복사하고 반환한다.
  • config는 key와 ref, 새로운 props를 포함한다.
  • 새로운 엘리먼트에는 원본 엘리먼트가 가졌던 props가 새로운 props와 얕게 합쳐진다.
  • 새로운 자식들은 기존의 자식들을 대체한다.
  • config에 key와 ref가 없다면 원본 엘리먼트의 key와 ref는 그대로 유지된다.
새로운 key와 ref가 있다면 이전 값을 대체한다.
 
React.cloneElement()는 아래의 구문과 거의 동등하다.
<element.type {...element.props} {...props}>{children}</element.type>
 
그렇지만 ref들이 유지된다는 점이 다르다.
즉 조상이 가지고 있을 ref를 사용하여 자식 엘리먼트에 접근하는 것이 허용된다.
 

예제

const nodes = React.Children.toArray(children) .filter((element) => React.isValidElement(element)) .map((element, index, elements) => { return React.cloneElement(element as React.ReactElement, { // element가 ReactElement라는 것을 명시해주어야 한다. style: { marginRight: type === "horizontal" && index !== elements.length - 1 ? size : undefined, marginBottom: type === "vertical" && index !== elements.length - 1 ? size : undefined, }, }); });
 
 

참고 자료

React 최상위 API - React
React 컴포넌트를 사용하면 UI를 독립적이고 재사용할 수 있는 부분으로 나누고 각 부분을 분리하여 생각할 수 있습니다. React 컴포넌트는 React.Component 또는 React.PureComponent 로 세부적으로 나누어 정의할 수 있습니다. ES6 class를 사용하지 않는다면, create-react-class 모듈을 대신 사용해도 됩니다. 자세한 정보는 ES6 없이 React를 사용하기 문서에서 확인할 수 있습니다.
React 최상위 API - React
https://ko.reactjs.org/docs/react-api.html#cloneelement
React 최상위 API - React