2017-01-31 6 views
0

複数の反応コメントボックスを作成しようとしています。クラスではなく#idを使用しているパッケージを使用しています。私はgetelemensbyclassnameからGetelemntbyIDを変更しようとしているが、私はエラーを取得しています:複数の反応をIDではなく複数のdivにレンダリングしようとしています

Uncaught Error: _registerComponent(...): Target container is not a DOM element.

私のコード

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import CommentBox from './components/CommentBox.jsx'; 

window.Laravelista = window.Laravelista || {content_type: null, content_id: null, login_path: '/login'}; 

ReactDOM.render(
    <CommentBox content_type={Laravelista.content_type} content_id={Laravelista.content_id} login_path={Laravelista.login_path} />, 
    document.getElementsByClassName('laravelista-comments') 
); 
私は、次のdivにそれらをレンダリングしようとしています

<div class="laravelista-comments"></div> 

これはどのように達成できますか?

ない複製は、これは必要と反応する

+1

あなたのcommentBox.jsxを共有できますか?あなたの問題を示すjsfiddleを作ることができれば、より良いことになります。 – user3775217

+0

@ user3775217 http://pastebin.com/EzSdezia –

+1

[ReactJsの可能な複製:DOMをクラス名でドキュメント化することはできますか?](http://stackoverflow.com/questions/32556374/reactjs-is-itクラスからドキュメントへのレンダリングが可能) – Ananth

答えて

3

document.getElementsByClassName()はなく、1つ1 DOM要素のHTMLCollectionを返し、クラス名を持つ1つだけでなく、すべてに適用したいと考えています。あなたがしなければ、あなたがクラスをターゲットにして、コンポーネントをレンダリングすることはできません

ReactDOM.render(
    <CommentBox content_type={Laravelista.content_type} content_id={Laravelista.content_id} login_path={Laravelista.login_path} />, 
    document.getElementsByClassName('laravelista-comments')[0] 
); 
+0

前述したように、私は最初のものではなくページ上のすべてのものを望んでいます。 –

+0

@randommmanこの場合、 'HTMLCollection'をループし、各アイテムに対して' ReactDOM.render() 'を一度呼び出す必要があります。関数に複数のDOM要素を渡すことはできません。 – Timo

1

最初のものでアプリをレンダリングするために、インデックスのみゼロで要素にアクセスすることにより、コレクションの最初のアイテムを渡します未知のエラー:不変違反:_registerComponent(...):ターゲットコンテナはDOM要素ではありません。ただ

<div id="laravelista-comments"></div><div class="laravelista-comments"></div>を変更し、最終的に

ReactDOM.render(
    <CommentBox content_type={Laravelista.content_type} content_id={Laravelista.content_id} login_path={Laravelista.login_path} />, 
    document.getElementById('laravelista-comments') 
); 
この問題を修正するには
が、これはあなたのお役に立てば幸いですか!

+1

ページ全体で1つのIDしか持てないので、1つの要素にのみ適用でき、ターゲットにする必要がある複数の要素があるため、クラスを使用する必要があります。 –

関連する問題