[React] props.children 값 동작
9915 단어 React
먼저 결론을 내리다.하위 요소가 있을 때props입니다.children에 하위 요소를 삽입하지만 하위 요소가 없으면 자유롭게 사용할 수 있습니다.
환경
"react": "^16.13.1"
"react-dom": "^16.13.1"
전제 지식
React에서 props.children은 하위 요소의 값을 저장하는 예약 후입니다.
const WithPizza = (props) => <div>{props.children}🍕</div>
ReactDOM.render(
<WithPizza>Hello World</WithPizza>,
document.getElementById('root')
)
// => Hello World🍕
children 속성에 값 추가 시도
실험적으로children 특성이 값에 들어갔을 때의 행동이 어떻게 되는지 봅시다.
다음은 모두 4건으로 각각 확인됐다.
const Wrap = ({ children, text }) => (
<div>
<h2>{text}</h2>
<li>children: {children}</li>
</div>
);
function App() {
const Case1 = <Wrap text="CASE1" />
const Case2 = <Wrap text="CASE2"><span>🍎</span></Wrap>
const Case3 = <Wrap text="CASE3" children="🐠" />
const Case4 = <Wrap text="CASE4" children="🐠"><span>🍎</span></Wrap>
return (
<div>
{Case1}
{Case2}
{Case3}
{Case4}
</div>
);
}
이 결과는 아래와 같다.Case1~Case2는 일반적인 행위입니다.Case3~Case4는 위화감은 없지만 왜 그런지 더 정확히 알고 싶어요.
기록을 해보도록 하겠습니다.
<Wrap />
등 JSX는 React.createElement
의 문법당이다.여기에서
React.createElement
생성된 대상의props 특성을 기록하고 확인합니다.function App() {
// ...
const Case1 = <Wrap text="CASE1" />
console.log('Case1', Case1.props.children)
// => undeifned
const Case2 = <Wrap text="CASE2"><span>🍎</span></Wrap>
console.log('Case2', Case2.props.children)
// => { type: "span", props: { children: "🍎" }, ... }
// ReactElementですね
const Case3 = <Wrap text="CASE3" children="🐠" />
console.log('Case3', Case3.props.children)
// => 🐠
const Case4 = <Wrap text="CASE4" children="🐠"><span>🍎</span></Wrap>
console.log('Case4', Case4.props.children)
// => { type: "span", props: { children: "🍎" }, ... }
// ReactElementですね
// ...
}
Case3와 Case4를 사용하면 이해하기 쉽습니다.Case3에서 children 속성에 포함된 문자열은 Case4에서 이불 요소로 대체됩니다.
결론
Reference
이 문제에 관하여([React] props.children 값 동작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/snamiki1212/items/f501ff88e337e2382666텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)