1
私は、少なくとも50個の入力からなる巨大なフォームを構築しています。入力中に親状態が変化しても変わらない
親関数
saveToState(details) {
const { company } = this.state;
company[details.part][details.element] = details.value;
this.setState({ company });
}
子コンポーネントに渡す(INPUT)
<FieldInput
label="Name (as shown) *"
part="information"
element="displayName"
saveToState={this.saveToState}
/>
: は、私は、フォームの状態への入力の値が保存されますフォームコンポーネントで機能を書いています入力コンポーネントは次のとおりです。
import React, { Component } from 'react';
export default class FieldInput extends Component {
render() {
const { label, part, element, saveToState } = this.props;
return (
<div className="field">
<label>{label}</label>
<div className="ui input">
<input
type="text"
name={`${part}[${element}]`}
onChange={(e) => saveToState({
part,
element,
value: e.target.value
})}
/>
</div>
</div>
);
}
}
結果はいつでも私は入力に何かを入力するそれは実際に私が入力に書いたものを表示するために200〜300ミリ秒かかる、状態はすぐに更新を取得していますが、私は文字を入力するたびに私は親のフォームの新しい状態を設定し、成分。私はそれの周りに見つけた唯一の方法は、それを渡すことなく、親コンポーネント内でsaveToState
を使用することです。しかし、それは1000行のコードを必要とします、これを回避する方法はありますか?ありがとう!
'input'sは制御されていません(つまり、状態の変更は' input'を再描画しません)。 'onChange'を使わない場合のパフォーマンスはどうですか? – Kujira