据我了解,动作创建者不了解状态,并且不允许减速器触发新动作.那么你如何根据状态调整一个动作 - 是否需要在渲染函数中完成?
作为一个例子,我有一个组件列出了项目集的标题.该数据存储在state.matches.单击某个项目应该会在我的Entries组件中显示详细视图.
目前,我有这个动作创建者,它下载条目并触发一个动作addEntry,使得entriesreducer将数据添加到state.entries中的缓存中.
export function getEntryFromId(id) {
return function(dispatch) {
dispatch(lookupInit(id));
fetch('/register/id/' + id)
.then( res => res.json() )
.then( res => dispatch(addEntry(res[0])) ) // data returned as array of one element
.catch( err => dispatch({ type: ENTRY_LOOKUP_FAIL }) );
}
}
Run Code Online (Sandbox Code Playgroud)
目前它总是下载新数据,因为它无法检查缓存.
另一种方法是将idSHOW_THIS_NEXT操作传递给条目端,此时reducer可以检查它是否在缓存中,如果没有则下载它.但是减速器不允许触发动作,最终可能被禁止.
我该如何勾选这个圆圈.
我假设你正在使用Redux Thunk来处理从thunk返回getEntryFromId?您返回的函数可以带getState参数:
export function getEntryFromId(id) {
return function(dispatch, getState) {
const currentState = getState();
// do something with `currentState`,
// only dispatch if necessary
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1778 次 |
| 最近记录: |