defaultValue
は、ページが初めて読み込まれるときにのみ機能します。同じページを再度ロードするが、異なるprops
がある場合、制御されていない入力フィールドには、新しいprops
の新しい値が入力されません。反応していない入力フィールドの値を設定する方法はないようですね。制御されていない反応入力フィールドに入力する正しい方法は何ですか?
私は材質-UI、私の制御不能な入力フィールドを使用していますが、このようなものになります。
<TextField
ref={input => this.dataNode.Name = input}
defaultValue={this.props.dataNode.Name}
floatingLabelText="Name"
/>
をそれはトリックは、しかし、私は本当に導入する必要がないん入力にランダムkey
を追加するようです無制御入力ごとにランダムなキー?
<TextField
key={some_random_thing}
ref={input => this.dataNode.Name = input}
defaultValue={this.props.dataNode.Name}
floatingLabelText="Name"
/>
あなたのコードのいくつかは役に立つかもしれません:) – CharlieBrown
あなたはこれを説明できますか? '同じページをもう一度読み込むとき'どうやってこれをやっている?親コンポーネントの値を更新すると、子が確実に更新されるためです。 –
ナビゲーションメニューについて考えてみましょう。すべてのメニュー項目は同じページにリンクされていますが、別の 'props'が渡されます。私の場合、別のページへの別のリンクをクリックしてフォームに戻ると、値が正しく入力されます。同じページです。たとえ新しい 'props'であっても、フォームはまだ古い値を持っています。 –