私は、反応成分に小道具として渡されるHTML文字列を含むサーバー応答を持っています。 html内には、Reactコンポーネントで置き換える必要のあるコードがあります。JSXと文字列を結合する方法
私はreact-string-replaceを使用してこれを動作させましたが、タグがReactによってエスケープされるため、HTMLでは動作しません。誰かがこれがどのように修正されるか知っていますか?
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
と表示されます。コンポーネントまたは子コンポーネント経由でコンポーネントを渡すことができる理由は分かりますか? – WitVault
私が取り組んでいるものの、Embedsコンポーネントにはサーバーから来るコンテンツの小道具があります。私はそれがHTMLとして提供されるか、その文字列から何かを置き換える必要があることを制御できません。 – Adam