2017-11-07 1 views
0

反応するが、私は、HTML、このリターン[オブジェクトのオブジェクト]をは、私が使用してHTMLなどのコンポーネントの子をレンダリングし、私はそれが正常に動作したテキストを設定し 場合、dangerouslySetInnerHtmlを反応させることができますどのようにDangerouslySetInnerHTML

class App extends React.Component{ 
    render(){ 
    return(
     <div dangerouslySetInnerHTML={{__html: this.props.children}}> 

     </div> 
    ) 
    } 
} 

1) ReactDOM.render(
    <App> Test </App>, 
document.getElementById('root')); --- Works 


2) ReactDOM.render(
    <App> <p>Test</p> </App>, 
document.getElementById('root')); --- return [object Object] 

Link to JS Bin

+0

'の値が__html'が文字列にする必要があるので、これは動作しませんが、あなたがオブジェクトを渡している、より特異的に反応するコンポーネント... – Chris

+0

...なぜあなたは 'dangerouslySetInnerHtml'を使っていますか?私はあなたがここで達成しようとしているものは見ません。 – Chris

+0

これはちょうど私のプロジェクトで、危険な設定インナーHTMLを使用する必要がある例です、他のアイデアはどのように私はこれを修正することができますか? –

答えて

0

として設定している場合コメントで説明したところでは、__htmlは文字列でなければならないが、<p>Test</p>から作成された反応コンポーネントを渡しているため、出力に[object Object]が出力されています。

なぜあなたはこれをやりたいのですが、文字列を渡す必要があるかどうかを求めていることは、まだ不明です。

<App>{"<p>Test</p>"}</App> 

または

<App children="<p>Test</p>" /> 

は両方とも同等であり、その後、__htmlの値になり、文字列、としてあなたのマークアップを渡す:

だからあなたは、次のいずれかを実行することができます。


注意!

JSXで書かれたReactコンポーネントではなく、通常のHTMLでのみ機能します。例えば

、この意志ない作品:

<App children="<Foo>Test</Foo>" /> 
+0

ありがとう、これは私の問題を解決します。 –

関連する問題