Quel est le sens de
{...this.props}
J'essaye de l'utiliser comme ça
<div {...this.props}> Content Here </div>
Quel est le sens de
{...this.props}
J'essaye de l'utiliser comme ça
<div {...this.props}> Content Here </div>
Réponses:
C'est ce qu'on appelle les attributs de propagation et son objectif est de faciliter le passage des accessoires.
Imaginons que vous ayez un composant qui accepte N nombre de propriétés. Les transmettre peut être fastidieux et compliqué si le nombre augmente.
<Component x={} y={} z={} />
Ainsi, à la place, vous faites cela, enveloppez-les dans un objet et utilisez la notation étalée
var props = { x: 1, y: 1, z:1 };
<Component {...props} />
qui le décompressera dans les accessoires de votre composant, c'est-à-dire que vous ne l'utiliserez "jamais" {... props}
dans votre render()
fonction, uniquement lorsque vous passez les accessoires à un autre composant. Utilisez vos accessoires non emballés comme d'habitude this.props.x
.
C'est ES6 Spread_operator
et Destructuring_assignment
.
<div {...this.props}>
Content Here
</div>
C'est égal à 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
);
ou 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
);
C'est la fonctionnalité ES-6. Cela signifie que vous extrayez toutes les propriétés des accessoires dans
div.{... }
L'opérateur est utilisé pour extraire les propriétés d'un objet.
Vous utiliserez des accessoires dans votre composant enfant
par exemple
si vos accessoires maintenant composants sont
{
booking: 4,
isDisable: false
}
vous pouvez utiliser ces accessoires dans votre compoenet enfant
<div {...this.props}> ... </div>
dans votre composant enfant, vous recevrez tous vos accessoires parents.
this.transferPropsTo
qui était obsolète dans React 0.12.x et sera supprimé dans 0.13.x. Il permet bien sûr une utilisation beaucoup plus avancée, mais la simple traduction de React 0.11.xthis.transferPropsTo(<Foo />)
en<Foo {...this.props} />
est plus utile pour les personnes effectuant cette transition.