为依赖数据实现redux中间件

时间:2016-09-18 15:13:36

标签: reactjs redux

实现通用redux中间件的最佳方法是什么,它将驻留在管道中并在检测到数据依赖时被触发

  

这是场景。我有笔记列表,并在单独的路线上注明详细页面(注释/:id)   如果用户通过notespage来记录详细页面,那么它工作正常,因为我知道该注释是从列入列表中选择/重定向的,并且可以在redux存储中使用   但如果浏览器直接到早期的书签链接会发生什么   我该如何设计一个会触发的中间件   这是否意味着我必须能够引用我的中间件中的所有操作?   这样如果数据不存在,则触发服务器调用

1 个答案:

答案 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!

祝你好运!