Каково значение
{...this.props}
Я пытаюсь использовать это так
<div {...this.props}> Content Here </div>
Каково значение
{...this.props}
Я пытаюсь использовать это так
<div {...this.props}> Content Here </div>
Ответы:
Это называется атрибутами распространения, и его цель - упростить передачу реквизита.
Представим, что у вас есть компонент, который принимает N свойств. Их передача может быть утомительной и громоздкой, если их число растет.
<Component x={} y={} z={} />
Таким образом, вместо этого вы сделаете это, оберните их в объект и используйте нотацию распространения
var props = { x: 1, y: 1, z:1 };
<Component {...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
);
Это особенность ES-6. Это означает, что вы извлекаете все свойства реквизита в
div.{... }
Оператор используется для извлечения свойств объекта.
Вы будете использовать props в своем дочернем компоненте
например
если ваш теперь компонент props
{
booking: 4,
isDisable: false
}
Вы можете использовать этот реквизит в своем детском сообществе
<div {...this.props}> ... </div>
в вашем дочернем компоненте вы получите все свои родительские реквизиты.
this.transferPropsTo
которая устарела в React 0.12.x и будет удалена в 0.13.x. Это, конечно, позволяет гораздо более продвинутое использование, однако простой перевод React 0.11.xthis.transferPropsTo(<Foo />)
в<Foo {...this.props} />
наиболее полезен для людей, совершающих этот переход.