グリドルはサブグリッドをサポートしています。状態を変更するフィールドの 1 つに (行の選択に使用される) カスタム コンポーネントがあります。この状態の変更により再レンダリングが発生し、サブグリッドが折りたたまれます。とはいえ、開けたままにしておきたい。
これと同じ問題が、この Github issueに記載されています。これには、フィルタリングによってサブグリッドが折りたたまれるこの例(Github の @denzelby に感謝) が含まれます。
フィドルのコードで、状態がどのように更新されるかonCountClick
(「inc」ボタンをクリック) に注意してください。これにより、再レンダリングが発生します。
var GridAndCounter = React.createClass({
render: function() {
var columnNames = ['id', 'age', 'name', 'company', 'state', 'country', 'favoriteNumber'];
var rowMetadata = {key: "id"};
return <div><Counter count={this.state.count} onClick={this.onCountClick} /><Griddle results={fakeData} rowMetadata={rowMetadata} columnNames={columnNames} resultsPerPage={100} showFilter={true} /></div>
},
onCountClick: function() {
React.addons.Perf.start();
this.setState({count: this.state.count + 1 });
setTimeout(function() {
React.addons.Perf.stop();
React.addons.Perf.printDOM();
}, 500);
},
getInitialState: function() {
return { count: 0 };
}
})
この状態の更新により、すべてが折りたたまれた状態に設定される再レンダリングが発生します。再レンダリング時にすべてを拡張したままにするにはどうすればよいですか? おそらく、どの行が展開されているかを自分で追跡することもできますが、行を展開するプログラムによる方法が必要になります。これは、Griddle では発見できませんでした。