反应表:收到新数据后刷新表

时间:2019-09-11 12:33:06

标签: reactjs react-table

我想在收到新数据后刷新我的反应表。我以为我在更改状态时会触发此操作,但是它不起作用。

下面是状态和更新功能:

this.state = {
    switchListSelected: [],
    switchListData: [],
    interfaceStatusData: [],
    interfaceErrorsData: []
}

updateParentState(data, element){       
    this.setState(prevState => {
        return prevState[element].push(data)
    }
}

2 个答案:

答案 0 :(得分:2)

您使用的setState错误。您应该使用新状态(或返回新状态的更新程序函数)调用setState,并选择在完成更新时调用该回调。您可以在反应文档here中检查setState的用法。

在您的示例中,updateParentState函数应如下所示:

updateParentState = (data, element) => {       
    this.setState({
        ...this.state,
        [element]: [...this.state[element], data]
    })
}

请注意,组件的状态永远不能直接更改。因此,使用传播运算符而不是Array.push which mutates the array创建了一个新数组。

答案 1 :(得分:0)

此处有2个问题:

  • 使用<?php include 'Source.php'; $get_tags = getTags(); print_r($get_tags); 时,您需要返回状态属性的对象以进行更新,在这里您返回setState的结果(数组长度)。
  • 您要使用prevState[element].push(data)对数组进行突变,需要使用不可变模式更新来正确触发具有更新状态的渲染。

这应该适合您的情况:

Array.push()