我们有一个通过websockets(ActionCable)实现的react-data-grid刷新。用户可以添加或更改行(通过覆盖iFrame),而不必重新加载整个网格。效果很好!除了...我们有一个自定义的过滤器方法,用于填充过滤器下拉菜单,当通过websocket刷新更新网格时,这些下拉列表不会重新填充。
我尝试修改状态列数组以触发下拉列表更新,并且尝试在客户过滤器中使用生命周期方法。我还尝试跟踪单击[筛选器行]按钮时运行的结果代码,该代码确实强制刷新下拉列表。
正如我所说,我尝试过此操作以尝试触发渲染。 (更改列状态和canFilter状态。不走运)
const body = {
"status": 200,
"message": "All Mentors",
"data": [
{
"first_name": "Brick",
"last_name": "Ken",
"email": "brick@gmail.com",
"address": "kigali",
"bio": "so successful",
"occupation": "army",
"expertise": "3 years",
"is_admin": false,
"is_mentor": true,
"mentorId": 2
}
]
};
const { id, ...rest } = body.data[0];
body.data[0] = {
mentorId: id,
...rest
};
console.log(body.data);
这是自定义过滤器。
const touchColumns = this.buildColumns(this.state.columns);
this.setState({canFilter: !this.state.canFilter});
this.setState({columns: touchColumns, rows:rowCopy});
...
buildColumns(columns) {
let hashedColumns = [];
columns.map((col, i) => (hashedColumns.push({
...col,
hash: (new Date).getTime()
})));
return hashedColumns;
}
React.Fragment用于此处以及用于主网格渲染。这可能是个问题吗?
我希望当主网格中的状态发生变化时,将重新填充过滤器下拉列表。目前,自定义过滤器代码甚至都没有被调用。
什么触发了过滤器的重新渲染?