0
ユーザー入力後に状態が変化したときに入力フィールドを変更するよりリアクション型の方法を見つけようとしています。これは私の現在の設定ですが、私はcomponentWillReceiveProps
方法でDOMへのシグナリングせずにこれを行う方法を探しています:ユーザー入力後に状態が変化したときに入力フィールドを変更します
export default class Example extends React.Component {
constructor(props){
super(props);
this.state = {title: props.arr.question};
};
componentWillReceiveProps(nextProps){
if(nextProps.arr.question !== this.state.title){
let id = "question" + this.props.arr.key;
document.getElementById(id).value = nextProps.arr.question;
this.setState({title: nextProps.arr.question});
}
}
render(){
return(<div>
<input type="text" id={"question" + this.props.arr.key} defaultValue={this.state.title} placeholder="Enter your title."/>
</div>
)
}
}
私は時の状態が変化し、Iは入力変化を見ることができますということでしたと仮定何同じように。実際には、何らかの理由で入力フィールド以外の要素で発生します。だから私は作品がcomponentWillReceiveProps
メソッドでDOMを参照しているのを見つけたと思って、そのように変更すると思います。
私が気づいていないより良い方法がありますか?
:
は、だからあなたのコード内に修正されますか? –
いいえ、あなたは必要ありません。私はこのコードを修正するためにあなたのコードに加えられた修正を加えました。 – Pineda
違いは、この特定の質問の入力では、この特定の入力にタイトルを直接入力するのではなく、別のものを入力することです。しかし、あなたのソリューションは機能しました。私がしなければならなかったのは、 'defaultValue'の小道具を削除し、' onChange'小道具を追加し、vanilla JSを介して直接DOMを呼び出すのではなく、 'onChange'が状態を設定することによってタイトルの変更を処理させることでした。 –