Передача объекта в качестве реквизита jsx

У меня есть объект, содержащий несколько общих реквизитов для ключевого значения, которые я хочу передать некоторым jsx. Что-то вроде этого:

const commonProps = {myProp1: 'prop1',myProp2: 'prop2'};
<MyJsx commonProps />

Я хочу, чтобы это работало как прохождение отдельных реквизитов:

<MyJsx myProp1={commonProps.myProp1} myProp2={commonProps.myProp2}/>

Это возможно?

Ответы

Ответ 1

Это возможно?

Да, почему вы думаете, что это невозможно, но то, как вы отправляете, неверно.

Значение <MyJsx commonProps/>:

<MyJsx commonProps={true} />

Поэтому, если вы не укажете какое-либо значение по умолчанию, это будет true. Чтобы передать объект, вам необходимо написать его следующим образом:

const commonProps = {myProp1: 'prop1',myProp2: 'prop2'};
<MyJsx commonProps={commonProps} />

Обновить:

Если у вас есть объект и вы хотите передать все свойства в качестве отдельной опоры, напишите его так:

<MyJsx {...commonProps} />

Ответ 2

Для этого вы можете использовать оператор распространения.

You can simply do <MyJsx {...commonProps} />

Теперь, что все индивидуальные свойства, которые у вас есть в commonProps, будут отправлены как отдельные опоры для MyJsx

Ответ 3

Вам нужно использовать двойные фигурные скобки, например:

messages={{tile:'Message 1'}}

Или передать много объектов:

messages={[{title:'Message 1', name: 'Andrew'}, {title:'Message 2', name: 'Greg'}]}

Это просто синтаксис JS внутри фигурных скобок.

Конечный компонент может выглядеть следующим образом:

<Chat title="Some str" messages={[{title:'Message 1', name: 'Andrew'}, {title:'Message 2', name: 'Greg'}]} />

Ответ 4

Почему бы и нет?

Просто выполните <MyJsx propName: {commonProps}/>.