Reactjs 数组索引不起作用时响应动态变量名

Reactjs 数组索引不起作用时响应动态变量名,reactjs,react-native,setstate,dynamic-variables,Reactjs,React Native,Setstate,Dynamic Variables,我的动态变量名在React中不起作用 在构造函数中,我使用以下内容定义我的事件: this.state = { event: { location: [ { name: 'asdfasdf', } ], } } 我的计划是使用以下功能访问位置名称: hand

我的动态变量名在React中不起作用

在构造函数中,我使用以下内容定义我的事件:

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
字符串?这是一个很好的观点,但它并没有真正试图解决问题中的主要问题。今晚或明天我会创建一个代码笔来展示它,谢谢!将等待