实现通用redux中间件的最佳方法是什么,它将驻留在管道中并在检测到数据依赖时被触发
这是场景。我有笔记列表,并在单独的路线上注明详细页面(注释/:id) 如果用户通过notespage来记录详细页面,那么它工作正常,因为我知道该注释是从列入列表中选择/重定向的,并且可以在redux存储中使用 但如果浏览器直接到早期的书签链接会发生什么 我该如何设计一个会触发的中间件 这是否意味着我必须能够引用我的中间件中的所有操作? 这样如果数据不存在,则触发服务器调用
答案 0 :(得分:0)
我建议在这里使用asyncConnect。您将状态作为参数,您可以检查数据是否存在,如果不存在则应加载它!这是一个简单的例子:
a="abc 123 def"
set -- $a
while [ -n "$1" ]; do
echo $1
shift
done
在abc
123
def
内,您需要检查当前状态是否存在数据,例如您可以执行以下操作:
@asyncConnect([{
promise: ({ store: { dispatch, getState }, params }) => {
const currentState = getState();
const promises = [];
if (!checkIfNoteExists(currentState)) {
promises.push(dispatch(loadNote(params.id)));
}
if (!checkIfCommentsLoaded(currentState)) {
promises.push(dispatch(loadComments()));
}
if (!checkIfAuthorLoaded(currentState)) {
promises.push(dispatch(loadAuthor()));
}
return Promise.all(promises);
}
}])
@connect(...)
class YouClass extends Component {
...
}
这将确保您的数据存在,如果不存在,则需要将其添加到承诺数组中。
同样重要的是要注意checkIfNoteExists
适用于服务器和客户端!同构应用FTW!