javascript - 更改状态中数组的特定索引而不是我的所有状态对象
问题描述
我正在做一个 React 复习。我在 App.js 中设置状态并创建了一个名为 handleUserNameChange() 的事件来更改状态对象中的用户名。来自 UserInput.js 的每个输入都应该在 App.js 中设置的状态下更改它的相对 UserOutput 组件的用户名。我怎样才能使当我在一个输入中键入文本时,它只会更改用户数组中的一个索引状态?我需要更改我的 handleUserNameChange 事件吗?
应用程序.js
import React, { Component } from 'react';
//Components
import UserInput from './UserInput/UserInput';
import UserOutput from './UserOutput/UserOutput';
class App extends Component {
state = {
users: [
{user: 'Debbie'},
{user: 'Ronald'}
]
};
handleUserNameChange = (event) => {
this.setState({
users: [
{user: event.target.value},
{user: event.target.value}
]
});
};
render() {
return (
<div className="App">
<UserOutput
username = {this.state.users[0].user}
/>
<UserInput
nameChange={this.handleUserNameChange} />
<UserOutput
username={this.state.users[1].user}
/>
<UserInput
nameChange={this.handleUserNameChange}
/>
</div>
);
}
}
export default App;
用户输出.js
import React from 'react';
const UserOutput =(props) => {
return (
<div>
<h3>{props.username}</h3>
</div>
);
}
export default UserOutput;
用户输入.js
import React from 'react';
const UserInput = (props) => {
return (
<div>
<input type="text"
onChange={props.nameChange}
/>
</div>
);
}
export default UserInput;
解决方案
handleUserNameChange
从渲染函数传递函数中的索引值并使用双箭头handleUserNameChange
获取索引值。
handleUserNameChange = index => event => {
this.setState(prevState => {
const users = [...prevState.users];
users[index].user = event.target.value;
return { users };
});
};
render() {
return (
<div className="App">
{this.state.users.map((user, index) => (
<React.Fragment>
<UserOutput username={user} />
<UserInput nameChange={this.handleUserNameChange(index)} />
</React.Fragment>
))}
</div>
);
}
推荐阅读
- android-studio - Android Studio 4.2.0更新gradle错误解决后
- javascript - 如何从 PHPMailer 获取 AJAX 响应
- android - 一段时间后再次调用Android onCreate方法
- python - Python Seaborn ValueError:这些“样式”级别缺少破折号
- python - openCV Python中input()的等效函数
- simulator - 如何在 Connect IQ 设备模拟器中模拟活动信息 elapsedDistance?
- html - 我正在尝试使我的图像适合容器,但它们被放大了
- sql-server - AWS DMS 跳过 SQL Server 中的某些表列
- python - 不和谐的自我机器人表现得像无法阅读消息
- postgresql - Postgres 似乎陷入僵局