# 1Wie verschachtelte Eigenschaften mit Verteilungsattributen korrekt übergeben werden? (JSX)
Hallo. Ich habe den 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"
Warum erhalte ich 1 variable Referenz für 2 separate Komponenten anstelle von 2 instanses von nested.prop für jede Komponente? Warum speichert this.props nach der Montage nur den zuletzt eingestellten Wert für alle Instances der Komponente? Ist es ein normales Verhalten? Ich denke, das richtige Verhalten hat verschiedene Eigenschaftswerte für verschiedene Instances.
P.S. Ich habe diesen Code here getestet.
# 2
jimfb hat annswered worden: "You are mutating the default prop that was passed in. The line this.props.nested.prop = this.props.parse.nested.prop; is illegal."
Meine nächste Frage: How to pass nested properties without a manual mutation of props?
Zum Beispiel:
Component.defaultProps =
{
nested:
{
prop1: "default",
prop2: "default"
}
};
const props =
{
nested:
{
prop1: "value"
}
};
let component = <Component {...props}/>;
Leitfaden zu dem obigen Code JSX Spread-Attribut-Feature überschreiben Sie einfach props.nested und ich verliere Standard geschachtelte Eigenschaften. Aber ich brauche es nicht. Wie implementiert man ein rekursives Traversing verschachtelter Objekte in der Phase der JSX-Spread-Attribute-Analyse?
Oder gibt es ein nützliches Muster für diesen Fall?
Bitte fragen Sie einen vollständig qualifizierten aufgeführt sind Frage hier als Links können sterben. – Neal
Hier sind Tipps, wie man eine gute Frage zu SO stellen kann: http://StackOverflow.com/Help/How-to-Arts – migg
* "Wie verschachtelte Eigenschaften weitergegeben werden" * 'foo (a.nested.property)'? –