Passing object as props to jsx

前端 未结 4 1399
傲寒
傲寒 2020-12-13 08:01

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\',         


        
相关标签:
4条回答
  • 2020-12-13 08:35

    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} />
    
    0 讨论(0)
  • 2020-12-13 08:39

    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.

    0 讨论(0)
  • 2020-12-13 08:52

    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'}]} />
    
    0 讨论(0)
  • 2020-12-13 08:54

    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} />
    
    0 讨论(0)
提交回复
热议问题