답변:
스프레드 속성 이라고 하며 그 목적은 소품 전달을 더 쉽게 만드는 것입니다.
N 개의 속성을 받아들이는 구성 요소가 있다고 가정 해 보겠습니다. 숫자가 증가하면 이러한 정보를 전달하는 것은 지루하고 다루기 어려울 수 있습니다.
<Component x={} y={} z={} />
따라서 대신 이것을 수행하고 객체로 감싸고 스프레드 표기법을 사용하십시오.
var props = { x: 1, y: 1, z:1 };
<Component {...props} />
이는 컴포넌트의 props로 압축을 풉니 다. 즉, props를 다른 컴포넌트로 전달할 때만 함수 {... props}
내에서 "절대"사용하지 않습니다 render()
. 포장을 푼 소품을 평소처럼 사용하십시오 this.props.x
.
ES6 Spread_operator
및 Destructuring_assignment
.
<div {...this.props}>
Content Here
</div>
다음과 같습니다. Class Component
const person = {
name: "xgqfrms",
age: 23,
country: "China"
};
class TestDemo extends React.Component {
render() {
const {name, age, country} = {...this.props};
// const {name, age, country} = this.props;
return (
<div>
<h3> Person Information: </h3>
<ul>
<li>name={name}</li>
<li>age={age}</li>
<li>country={country}</li>
</ul>
</div>
);
}
}
ReactDOM.render(
<TestDemo {...person}/>
, mountNode
);
또는 Function component
const props = {
name: "xgqfrms",
age: 23,
country: "China"
};
const Test = (props) => {
return(
<div
name={props.name}
age={props.age}
country={props.country}>
Content Here
<ul>
<li>name={props.name}</li>
<li>age={props.age}</li>
<li>country={props.country}</li>
</ul>
</div>
);
};
ReactDOM.render(
<div>
<Test {...props}/>
<hr/>
<Test
name={props.name}
age={props.age}
country={props.country}
/>
</div>
, mountNode
);
자식 구성 요소에서 소품을 사용합니다.
예를 들면
지금 컴포넌트 소품이
{
booking: 4,
isDisable: false
}
이 소품을 자녀의 compoenet에서 사용할 수 있습니다.
<div {...this.props}> ... </div>
자식 구성 요소에서 모든 부모 소품을 받게됩니다.
this.transferPropsTo
React 0.12.x에서 더 이상 사용되지 않고 0.13.x에서 제거 될 대체품으로 생각하는 데 도움 이 될 수 있습니다. 물론 그것은 그러나 단순히 번역 훨씬 더 고급 사용이 0.11.x의 반응 수this.transferPropsTo(<Foo />)
에<Foo {...this.props} />
그 변화를 만드는 사람들에게 가장 유용합니다.