2

我正在使用 react-table.js 从表单中获取数据,但我希望能够从表中删除数据。该按钮正在工作,所以我知道它已正确连接,但我似乎无法将其删除。这是代码

    handleDelete = item => {
    var newArr = [];
    const newState = this.props.documentation;
    for (var key in newState) {
      if (newState.hasOwnProperty(key)) {
        let data = newState[key];
        data.id = key;
        newArr.push(newState[key]);
      }
      const sliceArr = newArr.slice();
      if (sliceArr.indexOf(item) > -1) {
        sliceArr.slice(sliceArr.indexOf(item), 1);
      }
      console.log('New Array', sliceArr);
      this.setState({ data: sliceArr });
    }
  };

连同按钮,我将其附加到

Cell: row => (
          <div>
            <button onClick={() => this.handleDelete(row.id)}>Delete</button>
          </div>
4

1 回答 1

1

您正在寻找拼接而不是切片:

  const spliceArr = newArr.slice();
  if (spliceArr.indexOf(item) > -1) {
    spliceArr.splice(spliceArr.indexOf(item), 1);
  }
  console.log('New Array', spliceArr);
  this.setState({ data: spliceArr });

例子:

const newArr = [1, 2, 3, 4]
// [1, 2, 3, 4] example
const spliceArr = newArr.slice()
// [1, 2, 3, 4] ok
spliceArr.slice(spliceArr.indexOf(3), 1)
spliceArr
// [1, 2, 3, 4] oops
spliceArr.splice(spliceArr.indexOf(3), 1)
spliceArr
// [1, 2, 4]    better

如果这不能让你一直到那里,你可能想用表格本身的渲染(大概是 JSX)来更新你的问题,正如@MichaelBenin 所建议的那样。

于 2018-05-30T20:31:02.497 回答