2016-03-16 34 views
1

我想知道终极版的样板,如果有什么问题,我想在这个环节的方法: https://t.co/WSV81eDwkr特林减少一些utils的

基本的想法是,当你添加一个只操作文件修改新的行动。 关于改进我在想的是将递归合并从reducer状态传递的行为状态。 让我知道

回答

1

好的想法。不幸的是,这是redux中的一种反模式。行动应该是“纯粹的”,无国籍的,非变异的。您直接从一个操作中访问状态,该操作会绕过数据流(oldState => view => action => reducer => newState)。当然,这个框架可以帮助你,所以如果你发现这个解决方案能够很好地适应你的项目,那么它可能是一条可行的路。

但是要回答你的问题,如果你试图保持Redux方法,那肯定是错误的方法。我看到的另一个问题是,您无法轻松地序列化操作,因此如果您要使用这些操作,它可能会破坏时间旅行和redux开发工具。

事实上,Redux中涉及了很多样板文件,但要用这种新方法克服所有那些缺陷,这是付出代价的。在这种情况下调试应用程序的状态要困难得多。

+0

非常感谢您的回复! 我的想法是基于这篇文章 http://redux.js.org/docs/recipes/ReducingBoilerplate.html 其中Dan使用动作内部的状态,所以我认为这是合法的。 也许我应该通过旧的状态作为行动的参数,使之变得纯洁? 对于你的第二点,最后,函数仍然返回一个普通的json,所以它应该是可序列化的(对不起,在这种情况下名称updateLayoutState非常糟糕,它应该更像createLayoutAction)。 在任何情况下,您是否有任何解决方案来移除样板文件? –

+0

啊我明白了。在我看来,他的例子之间的区别在于他将这个国家视为一种“中间件”效应。关于你的代码跳到我身上的是你正在更新动作创建者的应用程序状态。如果这不是它正在做的事情,那么它开始变得更有意义。我认为这类问题在论坛中比质量保证网站更合适,因此我会在此停止,否则会变得太冗长,问题可能会被标记为过于笼统。 – ZekeDroid

+0

感谢您的建议。 我已将其移至此处: https://discuss.reactjs.org/t/an-approach-to-reduce-redux-boilerplate/3485 –