私はReactに対処しようとしているので、私の質問はとてもシンプルに見えるかもしれませんが、まだ私はそれに固執しています。ReactJsでdivにテキストエリアの値を保存
いくつかの値がある2つのブロック(div.user-data__row)があります。私はコンポーネントの状態(handleChange関数)、これらのブロックがテキストフィールド(textarea.text)に置き換えられている状態を変更します。saveボタンをクリックしてsaveChange関数を呼び出すと、各テキストフィールドの値が必要になりますブロックに渡されます(1番目のテキストエリアから1番目のブロックなど)。
ref属性を使用して同様のケースを解決する例が見つかりましたが、後でこれはもはや実際の解決策ではなく、誰もしないことをお読みください。実際の実装パスを見つけるのを手伝ってください。
class UserData extends React.Component {
constructor(props) {
super(props);
this.state = {
edit: true,
};
this.handleChange = this.handleChange.bind(this);
this.saveChange = this.handleChange.bind(this);
}
handleChange() {
this.setState(() => ({
edit: !this.state.edit,
}));
}
saveChange() {
this.setState(() => ({
edit: false
}))
}
render() {
if (this.state.edit) {
return (
<div className="user-data">
<div className="user-data__row">{this.props.userData.name}</div>
<div className="user-data__row">{this.props.userData.email}</div>
<button onClick={ this.handleChange }>Edit</button>
</div>
);
} else {
return (
<div className="user-data">
<textarea className="text" defaultValue={this.props.userData.name}></textarea>
<textarea className="text" defaultValue={this.props.userData.email}></textarea>
<button onClick={ this.saveChange }>Save</button>
</div>
)
}
}
}
良い説明のためにありがとう、サー! –
あなたはValdimirを歓迎します。 –