我想在收到新数据后刷新我的反应表。我以为我在更改状态时会触发此操作,但是它不起作用。
下面是状态和更新功能:
this.state = {
switchListSelected: [],
switchListData: [],
interfaceStatusData: [],
interfaceErrorsData: []
}
updateParentState(data, element){
this.setState(prevState => {
return prevState[element].push(data)
}
}
答案 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()