fixed-data-table-2
(npm)の実装を作成しています。編集ボタンでセルを入力に変更します。編集して保存(投稿)することができます。私は(状態の)配列全体を更新していますので、React - セルの内部状態の配列のハンドルの変更
しかし、大きな問題があります... は、それはあまりにも、onChange
がセルにトリガーされることをひとつひとつの時間をタイピングを遅いです。
イベントハンドラ(表)
import reactUpdate from "react/lib/update";
onChangeEditableCell(field, rowIndex, newValue) {
const data = reactUpdate(this.state.data, {[rowIndex]: {[field]: {$set: newValue}}})
this.setState({data : data});
}
イベントハンドラ(セル)
onChange(e) {
e.preventDefault();
const newValue = e.target.value;
this.props.onHandleInput(this.props.field, this.props.rowIndex, newValue);
}
render() {
const {rowIndex, field, data, editMode, onHandleInput, ...props} = this.props;
return (
<Cell {...props}>
{editMode ? <input onChange={this.onChange} className="text-cell-edit" type="text" value={this.getCell()} /> : data[rowIndex][field]}
</Cell>
);
}
これは明らかに悪い考えです...どうやって達成することができます同じだけど性能面では?
注
onHandleInput
(セルの小道具)onChangeEditableCell
(テーブルの機能)である
PS
ユーザーがSave
data
配列が必要
「編集モード」で状態を直接変更するのではなく、状態のコピーを変更しないでください。ユーザーが「保存」をクリックしたときに、または2つの状態を深くマージしますか? –
状態の外に変数を作成するのは良い方法ですか?そのような場合、私はそれを行う方法を検索するつもりです。それは良いアイデアのようです。 –
私は100%確信していませんが、状態への変更をストリーミングし、すべてのキーストロークで不必要なコンポーネントの再レンダリングを強制するのは過度の(そして "危険な")ようです。 –