Qual é o significado de
{...this.props}
Estou tentando usar assim
<div {...this.props}> Content Here </div>
Qual é o significado de
{...this.props}
Estou tentando usar assim
<div {...this.props}> Content Here </div>
Respostas:
É chamado de atributos de propagação e seu objetivo é facilitar a passagem de adereços.
Vamos imaginar que você tem um componente que aceita um número N de propriedades. Repassá-los pode ser entediante e difícil de controlar se o número aumentar.
<Component x={} y={} z={} />
Assim, em vez de fazer isso, envolva-os em um objeto e use a notação de propagação
var props = { x: 1, y: 1, z:1 };
<Component {...props} />
que irá desempacotar nos adereços em seu componente, ou seja, você "nunca" usa {... props}dentro de sua render()função, somente quando você passa os adereços para outro componente. Use seus adereços desempacotados normalmente this.props.x.
É ES6 Spread_operatore Destructuring_assignment.
<div {...this.props}>
Content Here
</div>
É igual a 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
);
É um recurso ES-6. Isso significa que você extrai todas as propriedades dos adereços em
div.{... }
operador é usado para extrair propriedades de um objeto.
Você usará adereços em seu componente filho
por exemplo
se seus acessórios agora são
{
booking: 4,
isDisable: false
}
você pode usar esses adereços na sua compoenet infantil
<div {...this.props}> ... </div>
em seu componente filho, você receberá todos os adereços de seus pais.
this.transferPropsToqual foi descontinuado no React 0.12.xe será removido no 0.13.x. É claro que permite um uso muito mais avançado, no entanto, simplesmente traduzir o React 0.11.x'sthis.transferPropsTo(<Foo />)para<Foo {...this.props} />é mais útil para as pessoas que estão fazendo essa transição.