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
);
}
}
最初の例は正常に動作しますが、2番目の例は修正方法を見つけられなかったエラーを投げます。代わりに配列を使用するか、ReactアドオンのcreateFragment(オブジェクト)を使ってオブジェクトをラップします。レンダリングしようとしているDOMノードは、何千ものコード行から来ています。私は、そのコードをそのまま使用して、残りのページを囲むことを望んでいました。私はそれが可能でないかもしれないと思っている – Iannazzi
ええ、ちょうどそれを実行し、同じエラーを持っています。理由はjavascriptで行われている(つまりdiv = document.createElement( 'div');)はReact要素オブジェクトを作成しないからです。レンダリングできない単純な要素を作成するだけです。私はすばらしいGoogleの検索をしていたので、まっすぐ上から上への変換方法を見つけることができないようです。 React compatibleにするために元のコードを編集する必要があるかもしれません。 – Jayce444