Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Passing object as props to jsx

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?

like image 699
Sabrina Avatar asked Mar 03 '18 06:03

Sabrina


People also ask

Can I pass an object as a prop in React?

Use the spread syntax (...) to pass an object as props to a React component, e.g. <Person {... obj} /> . The spread syntax will unpack all of the properties of the object and pass them as props to the specified component.

How do you pass props in JSX?

You can pass data in React by defining custom HTML attributes to which you assign your data with JSX syntax. So don't forget the curly braces. }export default App; As you can see, the props are received in React's class component via the this instance of the class.

How do you pass objects as props in React TypeScript?

To pass an object as props to a component in React TypeScript: Define an interface for the type of the object. Pass an object of the specified type to the child component, e.g. <Employee {... obj} /> .

How do you pass an array of objects as a prop in React?

To pass an array as a prop to a component in React, wrap the array in curly braces, e.g. <Books arr={['A', 'B', 'C']} /> . The child component can perform custom logic on the array or use the map() method to render the array's elements.


1 Answers

Is this possible?

Yes its possible, but the way you are sending it is not correct.

The 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 want to pass all the properties as separate prop, write it like this:

<MyJsx {...commonProps} /> 
like image 114
Mayank Shukla Avatar answered Oct 07 '22 06:10

Mayank Shukla