У меня есть ответ сервера, который содержит строку html, которая передается компоненту реакции в качестве опоры. Внутри html есть коды, которые необходимо заменить компонентами React.Как объединить строку с JSX
Я использовал реакцию-заменитель-заменитель, чтобы заставить это работать, но он не работает с HTML, поскольку теги избегают React. Кто-нибудь знает, как это может быть исправлено?
import React from 'react';
import replace from 'react-string-replace';
const reg = /\{(name)\}/g;
const Name = props => {
return (
<div>Hello {props.name}</div>
)
}
class Embed extends React.Component {
render() {
const person = this.props.person
const component = <Name name={person.name} key={person.id} />;
const output = replace(
this.props.content,
reg,
prop => component
);
return (
<div>{output}</div>
)
}
}
const Greeting = props => {
return <Embed content="<div><h1>Greetings</h1> <strong>{name}</strong></div>" person={{ name: 'John', id: 123 }} />;
};
export default Greeting;
Спасибо за ваш ответ. К сожалению, это вернет html-рендеринг правильно, но компонент jsx Name в качестве [object Object] – Adam
Могу ли я узнать, почему вы передаете строку как jsx, когда вы можете передать сам компонент либо через prop, либо через дочерние элементы. – WitVault
Это упрощенный пример что я работаю, но компонент Embeds имеет поддержку содержимого, которая поступает с сервера. Я не могу контролировать, что это происходит как HTML или что у него должно быть что-то из этой строки. – Adam