この問題に関連するすべてのスタックオーバーフローの質問、この公式の反応投稿、および推奨される解決策を既に読みました。
もう使用することはお勧めしcomponentWillReceiveProps
ません!
この質問を重複としてマークする前に、私の特定の質問を理解してください。特定の問題の解決策が見つかりませんでした。
私がやろうとしていることは非常に簡単です:私はpropsから値を受け取り、値を送信
する
コンポーネントを持っています(コールバック) onEnterイベント(入力時にのみサーバーに値を送信します) props.valueはランダムに変更できます(サーバーからの websocket による)KInputRange
私の質問:
私のコンポーネント内では、<input>
value 属性はデータを取得しますprops
かstate
?
小道具からの場合: ユーザーが入力データを入力したときに値を内部的に更新するにはどうすればよいですか?
状態からの場合: props.value がサーバーからランダムに変更された場合、新しい値を更新するにはどうすればよいですか?
私は実際に小道具の変更で内部状態を更新する必要がありますが、反応がアンチパターンだと言っている場合、今日それを行う方法は?
これまでの私のコード:
class KInputRange extends React.Component<any, any> {
constructor(props: any) {
super(props);
}
private onKeyDown(e: any): void {
//If the key is enter call to props.onEnter with the current value
}
private onChange(e: any): void {
//if user change the value- change the internal value
}
public render() {
return (
<input value={?????} type="text" onChange={(e) => this.onChange(e)} onKeyDown={(e) => this.onKeyDown(e)}/>
);
}
}
使用法:
<KInputRange value={this.state.dataFromTheServer} onEnter={(val: number) => this.kInputRangeEnterClicked(val)}/>