idシステム上で子コンポーネントを既存のReactコンポーネントに動的に追加したい。これを行うには、コンポーネントのレンダリングを行う前に、新しいコンポーネントがIDとともに格納されているコンポーネントのリストがあります。このリストでは、私はidでコンポーネントを取得し、それのaddChild()
関数を呼び出すことができます。コンポーネントはその後に再度レンダリングされます。子コンポーネントは、ComponentWithChildsだけでなく、どんなタイプでも構いませんが、これは単なる例です。子どもをReactコンポーネントに動的に追加する
components = {};
var ComponentWithChilds = React.createClass({
getInitialState : function(){
components[this.props.id] = this; //saves the component into the list
return {children : []};
},
addChild : function(child){
this.state.children.push(child);
this.setState({
children : this.state.children
});
},
render : function(){
return React.createElement("div",{},this.state.children);
}
});
ReactDOM.render(
React.createElement(ComponentWithChilds, {id:"id1"}),
document.getElementById('app')
);
components["id1"].addChild(React.createElement(ComponentWithChilds, {id:"id2"})); //adds a child to the element with id: "id1"
これは反パターンであり、私は理解することができます。これは、リアクトのいくつかの原則を破るためです。それで、これを反応に優しい方法で実現する最善の方法は何ですか?
はあなたがレンダリング機能の外のコンポーネントをレンダリングしたいと思う理由について教えてください。 –
私はそれらをレンダー機能の外でレンダリングしたくありません。 idを介してコンポーネントに子を追加し、再レンダリングをトリガーして変更が適用されるようにします。 – landunder