使用React或React Native时,常见的情况是使用 redux-thunk ,这样您就可以保持后端和redux状态同步 .
我意识到大多数时候,相同的模式用于所有功能,您可以在其中调用REST API,并在响应之后更新Redux状态:
例:
// ADD ARTICLE
export const addArticle = (article) => {
type: 'ADD_ARTICLE',
article
}
export const startAddArticle = (articleData) => {
return (dispatch, getState) => {
...
// call api using axios or fetch and dispatch addArticle at the end
}
}
你应该总是使用这种模式(或Redux),如果是的话,这样做的好处是什么,而不仅仅是创建一个你可以调用REST API的类(类似于Angular中的DataService)而不是使用Redux状态,因为所有信息都已存储在数据库中并可通过后端调用访问?
1 回答
Redux是单向数据流,换句话说,它是应用程序的真实来源 . 它更容易与州进行互动 . 想想,你有一个模态组件,想要关闭并打开它而不从父组件传递道具,你可以使用redux轻松完成 . (也是上下文api,但我们的重点是现在Redux . 你可以谷歌获取更多关于context api的信息)
Redux thunk是redux的中间件,可以进行异步调用 . 它会采取您的操作,在响应返回时调用下一个redux链进行异步调用 . 非常简单的工作流程如下,
action -> middleware(redux-thunk) -> reducer -> state -> View
您不必总是使用此模式 . 对于你想跟踪加载状态的更复杂的应用程序,可以使用Redux-Saga作为示例,你也可以使用redux-thunk跟踪加载状态,但在我看来它不像Redux-Saga那样方便 . Saga使用发电机模式,可以进行多次通话 .
如果您的项目太小,则不必使用Redux,您可能需要查看Mobx . 还有一些人在使用Apollo Graphql客户端时不使用redux . 但说实话,Redux让事情变得简单 .