【发布时间】:2018-08-12 02:31:45
【问题描述】:
我有一个组件,在 componentDidMount 上将执行异步 API 数据库获取。
在同一个组件上,用户可以将一个项目添加到集合中。不幸的是,即使新文档已添加到集合中,组件也不会自动重新呈现。如何在显示新文档的同时调用另一个渲染?
【问题讨论】:
-
您能详细说明一下吗?简单的示例代码,将更好地概述您正在尝试做的事情。
我有一个组件,在 componentDidMount 上将执行异步 API 数据库获取。
在同一个组件上,用户可以将一个项目添加到集合中。不幸的是,即使新文档已添加到集合中,组件也不会自动重新呈现。如何在显示新文档的同时调用另一个渲染?
【问题讨论】:
如果您的集合是一个数组,则在创建项目时,您应该使用concat 方法而不是push 返回一个新数组,或者通过索引直接访问该数组。
查看此代码:
const myReducer = (state = initState, action) => {
switch (action.type) {
case 'FETCH_SUCCESSFUL': return action.data
case 'NEW_ITEM': return [].concat(state, [action.newItem])
}
}
当您返回一个新数组时,redux 将知道状态已更改,并且您的组件也会自动更新。
【讨论】: