Яке значення
{...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.{... }
Оператор використовується для отримання властивостей об'єкта.
Ви будете використовувати реквізит у своєму дочірньому компоненті
наприклад
якщо зараз ваш реквізит компонента
{
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} />
є найбільш корисним для людей, які здійснюють цей перехід.