2つの入力ボックスがあります。 1つの入力(1)ボックス値(キーアップイベントの場合)に基づいて、別の入力(2)ボックス値を入力しています。現在、私はdocument.getElementByID
オプションを使用して要素IDを取得し、値を入力しています。それは反応のjsでお勧めですか? plsが提案する。反応するjsの中でこのより良い方法を見つけるのが好きです。react js - 別のDOM要素値に基づいて値を設定する方法
0
A
答えて
0
問題は2通りの方法で処理できます。
- 第1の方法は、React refsおよびDOMを使用することです。コード中のSO
私は二つのことを行っているの下に、私はgetName
入力にref
小道具を追加し、this.refs.inputOfName', as well as
e.target as your DOM input without accessing again by
getElementById`によってhandleChange
方法からそれをアクセスしてきました。
handleChange(e) {
let value = e.target.value;
if (value.length > 4) {
this.refs.inputOfName.value = value
}
}
render() {
return (
<div>
<Card>
<div>
<label>Id</label>
<input type="text" id="getId" onKeyUp=
{this.handleChange.bind(this)} />
<div>
<label>Name</label>
<input type="text" id="getName" ref="inputOfName" readOnly />
</div>
</div>
</Card>
</div>
);
詳細については、hereを参照してください。
- 第2の方法は状態を使用することです。
Reactの「スタイル」アプローチとReactの利点の1つであるため、状態を使用することをお勧めします。そのため、Reactの状態とライフサイクルについてより多くの時間を学習してください。
詳細はhereです。
handleChange(e) {
let value = e.target.value;
if (value.length > 4) {
this.setState({
name: value
});
}
}
render() {
return (
<div>
<Card>
<div>
<label>Id</label>
<input type="text" id="getId" onKeyUp=
{this.handleChange.bind(this)} />
<div>
<label>Name</label>
<input type="text" id="getName" value={this.state.name} readOnly />
</div>
</div>
</Card>
</div>
);
}
1
最初の入力ボックスの値をコンポーネントの状態に保存し、2番目の入力ボックスの値を状態の値に設定できます。入力ボックスの値が変化するが、今度は第二の入力ボックスを更新するコンポーネントを再描画handleChange方法を使用して、状態を更新し
。
...
constructor(props) {
super(props)
this.state = {
inputText: ''
}
this.handleChange = this.handleChange.bind(this)
}
handleChange({ target }) {
if (target.value.length > 4) {
this.setState({
inputText: target.value
})
}
}
render() {
return (
<div>
<Card>
<div>
<label>Id</label>
<input type="text" id="getId" onKeyUp={ this.handleChange } />
<div>
<label>Name</label>
<input type="text" id="getName" value={ this.state.inputText } />
</div>
</div>
</Card>
</div>
)
}
...
0
すでにとして言及し、それがユーザーgetElementById
に共通ではありません内のあなたは2つのコンポーネントがレンダリングされます場合はどうなるかを考え、コンポーネントを反応させます。
コンポーネントの状態を使用して要素を更新できます。
constructor(props, context) {
super(props, context);
// This will represent your component state to hold current input value.
this.state = { value: "" };
// Do handler bindings in one place and not inside the render
// function as it will create a new function reference on each render.
this.handleChange = this.handleChange.bind(this);
}
handleChange(e) {
this.setState({value: e.target.value});
}
render() {
return (
<div>
<Card>
<div>
<label>Id</label>
<input type="text" id="getId" onKeyUp={this.handleChange}/>
<div>
<label>Name</label>
<input type="text" value={this.state.value} readOnly/>
</div>
</div>
</Card>
</div>
);
}
関連する問題
- 1. Datepicker - 別の要素の値に基づいてminDateを設定します。
- 2. 別の値に基づいてCSS値を設定する
- 3. テーブルのフィールドを別のテーブルの値に基づいて設定する方法
- 4. current_userに基づいてデフォルト値を設定する方法は?
- 5. mysqlの別の列の値に基づいて列に値を設定する
- 6. 値を別の要素の高さに設定する方法
- 7. 別の列の値に基づいて列に値を設定する(SQL)
- 8. 既存の列の値に基づいて値を設定する方法
- 9. 別の要素の値に基づいて要素を検証する方法は?
- 10. インストールディレクトリに基づいて環境値の値を設定する方法
- 11. PHPの別のドロップダウン値に基づいてドロップダウン値を設定する
- 12. 別の要素の値に基づいて辞書のある要素の値を合計する
- 13. firebase管理値イベントに基づくDom要素の変更
- 14. セッション値に基づいてHTML要素を非表示にする方法
- 15. 別のnp.arrayの値に基づいてnp.arrayの値を設定します
- 16. d3.jsデータ値に基づいて異なるSVG要素を追加する
- 17. SASS条件:プロパティ値を別のプロパティ値に基づいて設定します
- 18. XSLの要素に基づいて値を移入する方法1.0
- 19. xmlスキーマは、別の要素値の存在に基づいて要素値を検証できますか?
- 20. Djangoテンプレート - 他の場所の値に基づいて要素の値を設定する
- 21. HTML選択オプション値に基づいて別の要素を選択するCSS
- 22. 子要素の値に基づいて親要素のCSSを変更する
- 23. 値に基づいてListViewItemに異なる色を設定する方法は?
- 24. リストの要素を別のリストの値に基づいて効率的にフィルタリングする方法
- 25. 別の列の数値に基づいて係数のレベルを設定する
- 26. Zend Frameworkのデータベース値に基づいてレイアウトを設定する方法
- 27. 値に基づいてDetailsViewの色を設定する方法は?
- 28. 別のHTMLドロップダウン選択に基づいてHTMLドロップダウンの値を設定する
- 29. XSDの他の値に基づいてXML要素値を制限する
- 30. 選択値に基づいて値を設定
あなたはより読みやすく:) –
私は(それはもう少し反応する適切だろう)と考えることができます他の2通りの方法がありますようにあなたのコードをリファクタリングしてくださいことができます。 1つは、入力のIDの代わりに参照を使用することです(これにより、同じReactコンポーネントの複数のインスタンスで問題が発生することはなく、通常は優先されます)。もう1つは、最初の入力ボックスの更新時に、入力ボックスの新しい値を状態に保存し、リアルタイムで更新します。次に、2番目のレンダリング時に 'value = {this.state.firstInputValue}' – Jayce444