从状态中删除特定项目

时间:2019-10-22 20:31:49

标签: javascript reactjs

我只想从点击状态中删除一个数组项,但是我很难使它起作用。我的状态如下所示,我想在点击时删除其中一个数据集(例如标签2)。

#include <iostream>
#include <string>
#include <vector>

void split (std::string line)
{
    std::string::size_type leng=0;
    leng=line.length();
    std::string k;

    for (long unsigned int i=0;i<leng; i++)
    {
        k.at(i)=line.at(i);
    }

    std::cout<<k;
}

int main()
{
    std::string line = "";
    std::cout << "Enter a string: ";
    getline(std::cin, line);
    split(line);
}

实际的数据集要大很多,我通常只是使用setState重新定义状态,但是由于数据量巨大,这是不实际的。有什么办法可以删除一个数组项吗?我曾尝试创建一个功能来删除该项目,如另一篇文章中所建议的那样,但我只能使它适用于顶级按键。

state = {
  data: {
    labels: time,
    datasets:[
      {
       "label": "Label 1",
      },
      {
       "label": "Label 2",
      },
      {
       "label": "Label 3",
      },
    ] 
  }
}

1 个答案:

答案 0 :(得分:-1)

几件事:

声明newState时,实际上并没有阻止直接的状态突变,因为仅声明一个新变量会创建对状态对象的引用,而不是一个全新的引用。尝试Array.from(this.state.datasets)

然后,您可以将新阵列设置为您所在状态的datasets阵列的替代者: this.setState({ datasets: newData })

如果您想编写一个函数来动态地执行此操作,我将编写一个带有索引并直接编辑数据数组的函数:

removeItem = (index) => {
        let newData = Array.from(this.state.datasets);
        newData.splice(index, 1);
        this.setState({ datasets: newData })
}

相关问题