2016-03-20 35 views
0

我是redux的新手,并且编写一个前端应用程序,该应用程序包含一个全局状态,该状态通过ajax在启动时检索,然后在检索新数据时通过轮询/推送更新。在导航到每个网址时,会有一个演员调度到一个动作,然后调用一个减速器,该动画用此筛选器globalState的过滤视图覆盖部分viewState对象。例如导航到url /items/filter/a将调整viewState以下几点:React&Redux应用程序设计

state { 
    viewState: { 
      items: [{id: 1, value: 'a'}] 
    } 
    globalState: { 
      items: [{id: 1, value: 'a'}, 
        {id: 2, value: 'b'}, 
        {id: 3, value: 'c']} 
    } 
} 

这一步后,然后ReactDOM.render()经由另一男主角叫和所有组件重新渲染与viewState更新值(这不是我的代码它直接从独角兽起动器包)

我想知道a)如果这是一个明智的方式去构建这种类型的应用程序。和b)是什么初始化应用启动时的globalState变量,然后侦听更新(这将可能再更新viewState如果与ID该对象是目前在viewState

+0

http://stackoverflow.com/a/35316147/5902017 –

回答

1

我没有最好的方法因为我们在项目中使用了普通版的Flux,但我们也有类似的情况,我们的解决方案也可能适合您的情况。

一般来说,我认为这是分割您的全球状态的好策略。也有这样做的库(例如Facebook Relay),这可能会给你这个功能和更多的开箱即用。

关于初始状态的渲染,我们所做的是设置所有的组件来处理一个空的数据集,也就是说,如果它们没有收到数据(在初始渲染时),它们只会渲染空的div s和一个加载器。然后,当从服务器检索到所有数据(我们使用Q库的同步承诺)时,我们会触发一个BeginRender操作,这会导致所有现在装满数据的商店触发更改事件。订阅商店的组件接收事件并调用商店方法来检索数据。一旦他们收到新的数据,组件状态就会更新,并且组件会重新呈现数据。

+0

真的很有趣的东西!非常感谢中继链接看起来很有希望 – Barry

+0

当然可以。我们开始计划去做同样的事情,但是发现了接力,这给了我们所有这些以及更多。为我们节省了大量的开发时间。 –

相关问题