以下の行では、コード内のonChange(だけでなく)の扱いを管理するための、よりクリーンで抽象的なアプローチをどのように作成することができたかを説明します。コンポーネントの外部でコンポーネントの状態を変更するにはどうすればよいですか?
後、私は、このパターンに出くわした:
class A extends React.Component {
constructor(props) {...}
handleText1Change = (e) =>
this.setState(prevState => ({
text1: e.target.value
}))
handleText2Change = (e) =>
this.setState(prevState => ({
text2: e.target.value
}))
render() {
return (
<div>
<input
type="text"
onChange={this.handleText1Change}
/>
<input
type="text"
onChange={this.handleText2Change}
/>
</div>
)
}
}
それはコンポーネントの各入力ごとの処理関数を記述するためにはかなり迷惑なんだし、それが大体(自分を繰り返さない)DRY原則に違反します。だから、私はそれをリファクタリングし、次のようになった:
class A extends React.Component {
constructor(props) {...}
handleInputChange = (value, property) =>
this.setState(prevState => ({
[property]: value
}))
render() {
return (
<div>
<input
type="text"
onChange={e => this.handleInputChange(e.target.value, 'text1')}
/>
<input
type="text"
onChange={e => this.handleInputChange(e.target.value, 'text2')}
/>
</div>
)
}
}
非常にクリーナーで再利用可能。しかし、他のいくつかのコンポーネントで同じ機能が必要な場合はどうすればよいですか?
これは非常に役に立ちます。ありがとうございます! – matt93