删除this.setState之前的数组中的空字符串

问题描述 投票:0回答:1

初始状态

    super(props);
    this.state = {
      user: {
        id: 0,
        firstName: '',
        lastName: '',
        phoneNumbers: ['', '', ''],
      }
    };
  }

我的handleInputChange函数:

  handleInputChange = (event) => {
    const { user } = this.state;
    const name = event.target.name;
    const value = event.target.value;

    if (name === 'contactNumber1') {
      user.phoneNumbers[0] = value;
    } else if (name === 'contactNumber2') {
      user.phoneNumbers[1] = value;
    } else if (name === 'contactNumber3') {
      user.phoneNumbers[2] = value;
      console.log('hellooo', user.phoneNumbers);
    } else {
      user[name] = value;
    }
    const filteredPhoneNumbers = user.phoneNumbers.filter(e => e !== '');
    this.setState(prevState => ({
      user: {
        ...prevState.user,
        [name]: value,
        phoneNumbers: [...filteredPhoneNumbers],
      },
    }));
  }

当我删除一个元素时,上面索引中的元素会填充我刚刚删除的元素,我会缺少什么?*我也因为我的代码而收到此错误-组件将undefined类型的受控输入更改为uncontrol。输入元素不应从受控状态切换到非受控状态(反之亦然)。确定在组件的生命周期中使用受控还是不受控制的输入元素*

javascript reactjs
1个回答
0
投票

您可以尝试像这样解析“ this.state”:

const { user } = JSON.parse(JSON.stringify(this.state));

我认为您是将相同的对象引用给用户缺点

© www.soinside.com 2019 - 2024. All rights reserved.