gpt4 book ai didi

javascript - 更新嵌套数组 react.js 中的状态

转载 作者:行者123 更新时间:2023-11-29 23:18:45 25 4
gpt4 key购买 nike

我正在尝试通过两种方式绑定(bind)以在 React 中为嵌套数组工作。我让它为部门名称工作,这是一个简单的单一输入。问题是当我尝试在 handleInputChangeArray 中为我的团队数组设置状态时。该应用程序中断,我收到一条错误消息,指出 this.state.team.map 不是一个函数。

  constructor(props) {
super(props);
this.state = {
departmentName: '',
team: [
{
name: '',
title: '',
salary: '',
}
]
}
]

};
this.handleInputChange = this.handleInputChange.bind(this);
this.handleInputChangeArray = this.handleInputChangeArray.bind(this);
}

这是我的两个功能:

handleInputChangeArray(event) {
const target = event.target;
const value = target.type === 'checkbox' ? target.checked : target.value;
const name = target.name;
this.setState(({team}) => ({team: {
...team,
[name]: value,
}}))
}

handleInputChange(event) {
const target = event.target;
const value = target.type === 'checkbox' ? target.checked : target.value;
const name = target.name;
this.setState({
[name]: value
});
}

此输入与我的 handleInputChange 完美配合

 <input  className="form-control" name=“departmentName” defaultvalue={this.state.departmentName} onChange={this.handleInputChange} type="text" />

这行不通:

{this.state.team.map(( listValue, index ) => {
return (
<td key={index}>
<input type="text" className="form-control" name="listValue.name" defaultValue={listValue.name} onChange={this.handleInputChangeArray} />
</td>
);
})}

最佳答案

你还必须传入 team 数组中哪个对象的 index 应该被更新,这样你就可以用 创建一个新对象name 属性更改为正确元素的 value

示例

class App extends React.Component {
handleInputChangeArray(event, index) {
const { target } = event;
const { name } = target;
const value = target.type === "checkbox" ? target.checked : target.value;

this.setState(prevState => {
const team = [...prevState.team];
team[index] = { ...team[index], [name]: value };
return { team };
});
}

render() {
return (
<tr>
{this.state.team.map((listValue, index) => {
return (
<td key={index}>
<input
type="text"
className="form-control"
name="name"
defaultValue={listValue.name}
onChange={event => this.handleInputChangeArray(event, index)}
/>
</td>
);
})}
</tr>
);
}
}

关于javascript - 更新嵌套数组 react.js 中的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51573892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com