在使用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状态,因为所有信息已经存储在数据库中并且可以通过后端调用进行访问了?
答案 0 :(得分:2)
Redux是单向数据流,换句话说,它是应用程序中真相的来源。它使与状态的交互更加容易。想一想,您有一个模态组件,并且想要在不通过父组件传递道具的情况下将其关闭和打开,则可以通过redux轻松实现。 (还有上下文api,但我们现在的重点是Redux。您可以在Google上搜索有关上下文api的更多信息)
Redux thunk是Redux进行异步调用的中间件。它需要您采取行动,并在响应返回时调用redux的下一个链。非常简单的工作流程如下所示,
action -> middleware(redux-thunk) -> reducer -> state -> View
您是否应该始终使用此模式(或完全使用Redux)
您不必总是使用此模式。对于想要同时跟踪加载状态的更复杂的应用程序,您可以使用Redux-Saga为例,也可以使用redux-thunk跟踪加载状态,但我认为它并不像Redux-Saga那样方便。 Saga的生成器模式非常适合拨打多个电话。
或完全Redux
如果您的项目太小,则不必使用Redux,则可能需要研究Mobx。另外,有些人在使用Apollo Graphql客户端时不使用redux。但是老实说,Redux使事情变得简单。