问题
I have an object contains multiple common key-value props, that I want to pass on to some jsx. Something like this:
const commonProps = {myProp1: 'prop1',myProp2: 'prop2'};
<MyJsx commonProps />
I want this to function as passing individual props:
<MyJsx myProp1={commonProps.myProp1} myProp2={commonProps.myProp2}/>
Is this possible?
回答1:
Is this possible?
Yes, why you think its not possible, but the way you are sending is not correct.
Meaning of <MyJsx commonProps />
is:
<MyJsx commonProps={true} />
So if you don't specify any value by default it will take true
. To pass the object you need to write it like this:
const commonProps = {myProp1: 'prop1',myProp2: 'prop2'};
<MyJsx commonProps={commonProps} />
Update:
If you have an object and wants to pass all the properties as separate prop, write it like this:
<MyJsx {...commonProps} />
回答2:
You can use the spread operator to do this.
You can simply do <MyJsx {...commonProps} />
Now what all individual properties you have in commonProps will be sent as individual props to MyJsx.
回答3:
You need to use double braces, like this:
messages={{tile:'Message 1'}}
Or to pass many objects:
messages={[{title:'Message 1', name: 'Andrew'}, {title:'Message 2', name: 'Greg'}]}
It's simply JS syntax inside braces.
A final component might look like this
<Chat title="Some str" messages={[{title:'Message 1', name: 'Andrew'}, {title:'Message 2', name: 'Greg'}]} />
回答4:
You can pass props as object in two ways:-
const commonProps = {myProp1: 'prop1',myProp2: 'prop2'};
1.Using spread Operator:-
<MyJsx {...commonProps} />
2.Simply pass that props:-
<MyJsx commonProps = {commonProps ? commonProps : true} />
来源:https://stackoverflow.com/questions/49081549/passing-object-as-props-to-jsx