React

[React] cloneElement()

썽연 2022. 7. 11. 19:20
728x90

React내에서 cloneElement()라는 것이 있다.
cloneElemenet란?

  • 쉽게 말해서 엘리먼트를 복제하는 것!
<InputGroup id={id} label={labelName} labelPos="left" error={error} fullWidth>
        <input
          type={type}
          onChange={onChange}
          onBlur={onBlur}
          value={value}
          placeholder={placeholder}
          name={name}
          id={id}
          disabled={inputDisabled}
        />
</InputGroup>

위 코드를 보면, InputGroup의 id와 input의 id를 각각 지정해주었어야한다.

id가 다를 경우 human error를 발생한다…

이 경우, inputGroup에서 사용한 id를 input의 id로도 사용하고 싶기 때문에
cloneElement를 이용할 것이다.

React.cloneElement(
  element,
  [config],
  [...children]
)

element를 기준으로 복사하고, 새로운 React 엘리먼트를 복사하고 반환한다.
config는 key와 ref 그리고 모든 props를 포함한다.
config에 key와 ref가 없다면 원본 엘리먼트의 key와 ref는 그대로 유지된다.

{React.cloneElement(children, { id })}

위 코드는 children을 복사할 것이며, id의 props를 받겠다는 뜻이다!
즉, input이 children인데, props의 id값을 받아서 나는 해당 input태그도 props의 id를 사용하겠다는 것이다!

728x90