我有一个教程中的以下代码

 handleDelete = counterId => {
    const counters = this.state.counters.filter(c => c.id !== counterId);

    this.setState({ counters });
  };


我正在创建一个新常量,该常量具有已删除counterId的现有数组。

但是我不明白“ c”在做什么,“ c.id”从何而来?

为什么它不是“ counterId”,即我绑定到该函数的属性。

谢谢

最佳答案

不是React JS。这是JavaScript的Array.prototype.filter()。它表示计数器中的当前项目。如果函数的返回值为true,则将保留该元素。如果没有,它将被删除。

具有相同代码的示例:



const _counters = [{
  id: 1,
  name: "Praveen"
}, {
  id: 2,
  name: "Kumar"
}];

const handleDelete = counterId => {
  const counters = _counters.filter(c => c.id !== counterId);
  return counters;
};

// Let's try deleting the Kumar.
console.log(handleDelete(2));





在上面的代码中,我使用了_counters来显示状态变量。如果您想了解内部情况,请查看控制台:



const _counters = [{
  id: 1,
  name: "Praveen"
}, {
  id: 2,
  name: "Kumar"
}];

const handleDelete = counterId => {
  const counters = _counters.filter(c => {console.log(c);return c.id !== counterId});
  return counters;
};

// Let's try deleting the Kumar.
console.log(handleDelete(2));

10-06 04:19