# 1Comment passer correctement des propriétés imbriquées avec des attributs de propagation? (JSX)
Bonjour. J'ai le code:
class Component extends React.Component
{
render()
{
this.props.nested.prop = this.props.parse.nested.prop;
return <div>Component</div>;
}
componentDidMount()
{
console.log(this.props.nested.prop);
}
}
Component.defaultProps =
{
nested:
{
prop: "default"
}
};
const obj1 =
{
nested:
{
prop: "obj1"
}
};
const obj2 =
{
nested:
{
prop: "obj2"
}
};
class Application extends React.Component
{
render()
{
return (
<div>
<Component parse={obj1}/>
<Component parse={obj2}/>
</div>
);
}
}
React.render(<Application />, document.getElementById('app'));
//console output:
//"obj2"
//"obj2"
Pourquoi dois-je obtenir une référence variable pour 2 composants séparés au lieu de 2 instanses de nested.prop pour tous les composants? Pourquoi this.props enregistre uniquement la dernière valeur définie pour toutes les instan- ces du composant après le montage? Est-ce un comportement normal? Je pense que le comportement correct est d'avoir des valeurs de propriétés différentes pour différentes instanses.
P.S. J'ai testé ce code here.
# 2
jimfb a été annswered: "You are mutating the default prop that was passed in. The line this.props.nested.prop = this.props.parse.nested.prop; is illegal."
Ma question suivante: How to pass nested properties without a manual mutation of props?
Par exemple:
Component.defaultProps =
{
nested:
{
prop1: "default",
prop2: "default"
}
};
const props =
{
nested:
{
prop1: "value"
}
};
let component = <Component {...props}/>;
Guide du code ci-dessus JSX La fonction d'attribut spread remplace juste props.nested et je perds les propriétés imbriquées par défaut. Mais ce n'est pas ce dont j'ai besoin. Comment implémenter une traversée récursive des objets imbriqués dans l'étape d'analyse des attributs de propagation JSX?
Ou Y a-t-il un modèle utile pour ce cas?
S'il vous plaît demander un qualifié question ici comme des liens peuvent mourir. – Neal
Voici des conseils pour poser une bonne question sur SO: http://stackoverflow.com/help/how-to-ask – migg
* "comment passer les propriétés imbriquées" * 'foo (a.nested.property)'? –