# 1Jak poprawnie przekazać właściwości zagnieżdżone z atrybutami spreadu? (JSX)
Witam. mam kod:
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"
Dlaczego mam 1 Zmienna odniesienia dla 2 oddzielnych komponentów zamiast 2 instanses z nested.prop dla każdego komponentu? Dlaczego ten.props zapisuje tylko ostatnią ustawioną wartość dla wszystkich instancji komponentu po zamontowaniu? Czy to normalne zachowanie? Myślę, że prawidłowe zachowanie ma różne wartości właściwości dla różnych instanses.
P.S. Przetestowałem ten kod here.
# 2
jimfb został annswered: "You are mutating the default prop that was passed in. The line this.props.nested.prop = this.props.parse.nested.prop; is illegal."
Moje następne pytanie: How to pass nested properties without a manual mutation of props?
Na przykład:
Component.defaultProps =
{
nested:
{
prop1: "default",
prop2: "default"
}
};
const props =
{
nested:
{
prop1: "value"
}
};
let component = <Component {...props}/>;
Przewodnik po powyższym kodzie JSX funkcja atrybutu spread właśnie zastępuje rekordy.nested i tracę domyślne właściwości zagnieżdżone. Ale to nie jest to, czego potrzebuję. W jaki sposób zaimplementować rekurencyjne przechodzenie obiektów zagnieżdżonych na etapie analizowania atrybutów spreadu JSX?
Czy jest jakiś użyteczny wzorzec dla tej sprawy?
Proszę zapytać w pełni wykwalifikowanym pytanie tutaj, jak linki mogą umrzeć. – Neal
Oto porady, jak zadać dobre pytanie na SO: http://stackoverflow.com/help/how-to-ask – migg
* "jak przekazywać właściwości zagnieżdżone" * 'foo (a.nested.property)'? –