Вы можете использовать это, но это определенно не JSX-способ.
import React, {ReactElement} from 'react';
interface ComponentProps {
str: string;
}
const Component = (props: ComponentProps): ReactElement => {
return <p>{props.str}</p>;
};
const App = (): ReactElement => {
const props: ComponentProps = {
str: 'hey',
};
return (
<div>
{React.createElement(Component, props)}
</div>
);
};
Я рекомендую использовать оператор распространения ...
, о котором вы рассказали нам в вопросе и который был предложен Феникс .
Вы сказали, что не поймете его, поэтому быстрое объяснение:
const obj1 = {a: 'foo', b: 'bar'};
const obj2 = {
something: 'hello world',
...obj1,
};
console.log(obj2) -> {a: 'foo', b: 'bar', something: 'hello world'};
Синтаксис ссылки
Так в вашем В этом случае он заполнял бы реквизиты так:
<Component
prop1={<something>}
prop2={<something>}
/>
И то, что вы сделали, было:
<Component
props={{prop1: <something>, props2: <something>}}
/>
Интерфейс для этого должен выглядеть следующим образом:
interface ComponentProps {
props: {
prop1: SomeType;
prop2: SomeType;
};
};