2016-10-20 4 views
2

私のアプリケーションにはタイルの概念があります。DOM内に配置する前にReactJSコンポーネントをメモリにレンダリングする

タイルが動的に読み込まれます。 initメソッドを使用してDOM要素に対して初期化することができます。タイルはレンダリング自体を処理します。

機能/私のタイルは、/

import contentsComponentFactory from './components/contents/factory' 

const tile = { 
    init, 
}; 

// `el` is a DOM element 
function init(el) { 
    // Render a "contents" ReactJS component (see below) to the DOM - how? 
    // Is the following possible? 
    el.appendChild(contentsComponentFactory.create({ props }).render()); 
} 

export default tile; 

tile.jsタイルが画面にタイルコンテンツをレンダリングコンポーネントcontentsを有しています。 initに私はメモリの内容をレンダリングするでしょうし、DOMに結果を挿入し

機能/私のタイル/コンポーネント/コンテンツ/ factory.js AngularJSで

const factory = { 
    create 
}; 

function create(options) { 
    const component = Object.create(React.Component.prototype); 

    component.props = options.props; 
    component.state = { message: 'This is a tile' }; 
    component.render = function() { 
    return <div>{this.state.message}</div>; 
    }; 

    return component; 
} 

export default factory; 

、。 ReactJSでこれを行うことはできますか?

私はReactJSを初めて使用しているので、何かを完全に誤解している可能性があります。

答えて

1

React.createElementを使用してメモリに要素を作成し、ReactDOM.render()をDOMに挿入する必要があります。

const element = React.createElement('div', null, 'Hello, World!'); 
ReactDOM.render(element, document.getElementById('content')); 

http://codepen.io/mikechabot/pen/PGXwxa?editors=1010

しかし、createElementは、ネイティブのDOM要素ではなく、ReactElementのインスタンスを返しません。これがあなたのニーズに合っているかどうかは不明です。

0

これはAngularJSで作業するのはかなり複雑なようですが、デザインを考え直すべきでしょうか?

Reactではさらに悪いですが、ReactDOMをバイパスして手動で挿入しようとしていますか?

これを試す前に、少なくともReactチュートリアルを実行することをおすすめします。

+0

私はライブラリを動的にロードして、そのように要求されたときにそのコンポーネントがレンダリングをするようにしたいと考えています。この例では、ReactJSを使用しています(他のコンポーネントはAngularか他のものかもしれません)。要約すると、ページがレンダリングされます。次に、タイルコンポーネントライブラリをネットワーク経由で読み込みます。後で、このコンポーネントを以前にレンダリングされたDOMにレンダリングする必要があります。上記の私の "解決策"は、コンポーネントをメモリ内でレンダリングし、それをDOMに挿入することです。これを行う良い方法は何ですか? – Ben

+0

フレームワークの基本機能を再実装しているようですが、最初にリアクションを使う方法を学ぶことを強くお勧めします。 ReactDOM.renderを使用するだけで、必要に応じて複数のマウントポイントを持つことができます。 – fabiend

+0

よろしくお願いいたします。だから 'ReactDOM.render'を使ってこのユースケースに行く方法です?私はReactを始めたばかりで、さまざまな入門書を読んでいます。 – Ben

関連する問題