Reactjs 数组索引不起作用时响应动态变量名
我的动态变量名在React中不起作用 在构造函数中,我使用以下内容定义我的事件:Reactjs 数组索引不起作用时响应动态变量名,reactjs,react-native,setstate,dynamic-variables,Reactjs,React Native,Setstate,Dynamic Variables,我的动态变量名在React中不起作用 在构造函数中,我使用以下内容定义我的事件: this.state = { event: { location: [ { name: 'asdfasdf', } ], } } 我的计划是使用以下功能访问位置名称: hand
this.state = {
event: {
location: [
{
name: 'asdfasdf',
}
],
}
}
我的计划是使用以下功能访问位置名称:
handleChange(e) {
const { event } = this.state
let value = e.target.value // test
let _key = e.target.name // location[0].name
event[_key] = value // this.setState would be good as well
}
问题:事件[键]未定义。即使只是“位置[0]”作为“键”也没有定义。
我的问题在哪里
编辑:
这里有一个小密码笔可以玩。我创建了3个handleChange函数来展示我迄今为止所做的尝试
你不应该改变状态。因此,在您的情况下,要获得具有更新状态的功能,您应该像这样更新代码:
handleChange(e) {
const { event } = this.state;
let value = e.target.value;
let _key = e.target.name;
this.setState({ event: { ...state.event, [e.target.name]: value } });
}
您的问题来自这样一个事实:
e.target.name
是一个字符串,而不是JS。因此,它正在执行事件['location[0].name']
。嗯,这很好……我该如何解决这个问题?给出了从何处开始的想法。通过函数curry获取位置索引,您可能会发现一种更简单的方法,但如果不了解如何呈现输入,我不知道这是否可行。您可以使用eval,但不建议使用eval,这取决于您。您将在_键或位置[0]中获得'asdfasdf'
此项。name
字符串?这是一个很好的观点,但它并没有真正试图解决问题中的主要问题。今晚或明天我会创建一个代码笔来展示它,谢谢!将等待