2016-09-22 90 views
0

我实现使用ReactNative与终极版移动应用程序,我实现看起来像这样的应用:我在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获取从数据服务器,检查它是否有效并启用传递到下一个屏幕。我觉得我不是在做的事情,它假设做出改变整个州申请的行动,但我觉得我不需要比我更多的状态。对我而言,全局事物是认证数据和侧边栏(因为它存在于整个应用程序中)。

我应该为每个屏幕更改做出操作吗? 我应该在全局状态应用程序中放置更多信息吗?

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

回答

2

我觉得Redux Reddit tutorial可能对您有用。这当然是给我的。

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

用在终极版方式,API请求及其成功完成应分别映射到一个动作。在每个操作中适当地改变应用程序状态(在缩减功能中),绑定到商店的视图/屏幕将重新呈现。所以,如果你正在做一个API请求:

  • 创建Search容器,映射状态searchResultsprops并结合Search组件。 (例如,请参阅this container。)
  • 消防措施REQUEST_SEARCH带用户输入的搜索项。
  • AJAX请求被触发。
  • AJAX请求已成功完成。消防行动RECEIVE_SEARCH与搜索结果。
  • SearchReducer存储搜索结果。
  • 绑定Search组件重新呈现搜索结果。

我应该为每个屏幕更改做出操作吗?我应该把更多的信息放在全局状态应用程序中吗?

作为一般规则,是的。但是有时我已经使用了组件状态(不分派动作)来存储组件本地的状态(例如更新文本字段)。

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

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

+0

谢谢你的答案,它给了我一些开始重构我的应用程序的东西。当你说:AJAX被解雇时,我应该在“REQUEST_SEARCH”操作中进行抓取调用吗? –

+0

是的,这是正确的。 ['fetch()'是一个Then-able](https://facebook.github.io/react-native/docs/network.html#handling-the-response),所以你可以添加一个成功的回调, RECEIVE_SEARCH'。 :) – logicalicy

相关问题