我正在使用ReactNative和Redux实现一个移动应用程序,我正在实现的应用程序看起来像这样:
Login (screen)
|--> Search for an object (screen)
|--> Show that object and edit it (screen)
|--> Take 2 photos (each photo a screen)
|--> A last screen for make a new object and save it
以上流程显示了每个屏幕如何完成工作并传递到下一个屏幕。
我的申请状态是下一个:
{
auth: {
logged: false,
token: ''
},
somethingOfSideBar...
}
但是我觉得我正在以错误的方式做事情,因为大多数屏幕都有自己的状态,例如 searchSomethingScreen 从服务器获取数据,检查它是否有效并启用传递到下一个屏幕。我觉得我不是用 Redux 方式做事情,它假设做出改变整个状态应用程序的动作,但我觉得我不需要比我更多的状态。对我来说,全局事物是auth数据和侧边栏(因为它存在于整个应用程序中)。
我应该为每个屏幕更改做出操作吗? 我应该在全球州申请中提供更多信息吗?
还有一件事,我有一个AppContainer组件,用于连接以访问商店,但我传递了部分状态和动作以及子属性,我觉得这也是错误的。
答案 0 :(得分:2)
我觉得Redux Reddit tutorial可能对您有用。这当然适合我。
但是我觉得我正在以错误的方式做事情,因为大多数屏幕都有自己的状态,例如searchSomethingScreen从服务器获取数据,检查它是否有效并启用传递到下一个屏幕。
在 Redux 方式中使用,API请求及其成功完成时,每个请求都映射到一个操作。在每个操作上适当地更改应用程序状态(在缩小功能中),并且绑定到商店的视图/屏幕将重新呈现。因此,如果您正在发出API请求:
Search
容器,将状态searchResults
映射到props
并绑定Search
组件。 (例如,请参阅this container。)REQUEST_SEARCH
。RECEIVE_SEARCH
。SearchReducer
存储搜索结果。Search
组件会重新呈现搜索结果。我应该为每个屏幕更改做出操作吗?我应该在全球州申请中提供更多信息吗?
作为一般规则,是的。但有时我使用组件状态(没有调度操作)来存储组件本地的状态(例如更新文本字段)。
还有一件事,我有一个AppContainer组件,用于连接以访问商店,但我传递了部分状态和动作以及子属性,我觉得这也是错误的。
通常,更高级别的组件应该是容器,它通过props将状态注入无状态组件。您可以拥有多个容器,它们可以像组件一样工作,因此您可以将容器嵌套在另一个容器中。我鼓励你看一下这些文档,因为它对我来说非常有用。 :)