我在我的ReactNative应用程序中正确实现了redux吗?

时间:2016-09-22 17:49:18

标签: react-native redux react-redux

我正在使用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组件,用于连接以访问商店,但我传递了部分状态和动作以及子属性,我觉得这也是错误的。

1 个答案:

答案 0 :(得分:2)

我觉得Redux Reddit tutorial可能对您有用。这当然适合我。

  

但是我觉得我正在以错误的方式做事情,因为大多数屏幕都有自己的状态,例如searchSomethingScreen从服务器获取数据,检查它是否有效并启用传递到下一个屏幕。

Redux 方式中使用,API请求及其成功完成时,每个请求都映射到一个操作。在每个操作上适当地更改应用程序状态(在缩小功能中),并且绑定到商店的视图/屏幕将重新呈现。因此,如果您正在发出API请求:

  • 创建Search容器,将状态searchResults映射到props并绑定Search组件。 (例如,请参阅this container。)
  • 使用用户输入的搜索字词触发操作REQUEST_SEARCH
  • AJAX请求被触发。
  • AJAX请求成功完成。使用搜索结果触发操作RECEIVE_SEARCH
  • SearchReducer存储搜索结果。
  • 绑定的Search组件会重新呈现搜索结果。
  

我应该为每个屏幕更改做出操作吗?我应该在全球州申请中提供更多信息吗?

作为一般规则,是的。但有时我使用组件状态(没有调度操作)来存储组件本地的状态(例如更新文本字段)。

  

还有一件事,我有一个AppContainer组件,用于连接以访问商店,但我传递了部分状态和动作以及子属性,我觉得这也是错误的。

通常,更高级别的组件应该是容器,它通过props将状态注入无状态组件。您可以拥有多个容器,它们可以像组件一样工作,因此您可以将容器嵌套在另一个容器中。我鼓励你看一下这些文档,因为它对我来说非常有用。 :)