2017-02-05 10 views
0

私はreact-boilerplateをしばらく抱きしめて、ドキュメントを読んで、ウェブを検索しました。私はいくつかのシンプルなコンポーネントとコンテナに問題はありませんでした。既存のJSコードを反応定型文に追加する場所

DOMノードを作成し、javascriptを使用してそれらを返すコードが大量にあります。簡単例えば

function makeSomething(){  
     let div = document.createElement('div'); 
     div.innerHTML = 'where would this go in reactjs boilerplate'; 
     return div 
    } 

私のコードは、テーブルの行を追加する行と列の削除、列の移動、リモートソースからデータをフェッチ、DOM操作のトンを行います。 jQueryを使用するajax呼び出しを除いて、すべてjavascriptで書かれています。

私の質問は、どのように呼び出して、返されたノードをコンテナに配置するのですか?

export default class VendorsPage extends React.Component { // eslint-disable-line react/prefer-stateless-function 

    // Since state and props are static, 
    // there's no need to re-render this component 
    shouldComponentUpdate() { 
    return false; 
    } 
    renderdiv(){ 
    return 'hi there'; 
    } 
    render() { 
    return (
     <div>{this.renderdiv()}</div> 
    ); 
    } 
} 

:まあ、あなたの例でそれを行うだろう方法はとても似ている

export default class VendorsPage extends React.Component { // eslint-disable-line react/prefer-stateless-function 

    // Since state and props are static, 
    // there's no need to re-render this component 
    shouldComponentUpdate() { 
    return false; 
    } 
    renderdiv(){ 
    let div = document.createElement('div'); 
    div.innerHTML = 'hi there' 
     return div 
    } 
    render() { 
    return (
     //how do I put renderdiv in here 
    ); 
    } 
} 

答えて

0

:ここ

は、コンテナ内のノードを作成したjsファイルを追加しようとしているの簡略化した例でありますReactでタグの1つのペアで囲まれたものを返さなければならないので、通常はdivなどのデフォルトの囲みタグを持っていて、その中にレンダリングしたいものすべてを置くのが一番です。

renderdiv(){ 
    div = document.createElement('div'); 
    div.innerHTML = 'hi there' 
     return div 
    } 
    render() { 
    return (
     <div>{this.renderdiv()}</div> 
    ); 
    } 

を、あなたは親のdivを持っていると思い除いては、同じことをしたい:だから、あなたはそれが最初だったのと同じあなたrenderdiv()関数を維持したい場合は、代わりにこのようにそれを行うことができます。あなたのコードをReact形式に変換してハイブリッドにならないようにしてください。

+0

最初の例は正常に動作しますが、2番目の例は修正方法を見つけられなかったエラーを投げます。代わりに配列を使用するか、ReactアドオンのcreateFragment(オブジェクト)を使ってオブジェクトをラップします。レンダリングしようとしているDOMノードは、何千ものコード行から来ています。私は、そのコードをそのまま使用して、残りのページを囲むことを望んでいました。私はそれが可能でないかもしれないと思っている – Iannazzi

+0

ええ、ちょうどそれを実行し、同じエラーを持っています。理由はjavascriptで行われている(つまりdiv = document.createElement( 'div');)はReact要素オブジェクトを作成しないからです。レンダリングできない単純な要素を作成するだけです。私はすばらしいGoogleの検索をしていたので、まっすぐ上から上への変換方法を見つけることができないようです。 React compatibleにするために元のコードを編集する必要があるかもしれません。 – Jayce444