【发布时间】:2015-11-04 03:57:59
【问题描述】:
官方React.js tutorial 有一个有趣的做法,就是将回调作为道具传递给子组件。在他们的示例中,它们有一个名为 CommentBox 的父组件和一个名为 CommentForm 的子组件。父 (CommentBox) 将回调方法 handleCommentSubmit 传递给子 (CommentForm)。当表单提交时,子组件触发回调通知父组件表单已提交。
然而,这个 React 教程不是Flux architecture 上的教程。从我有限的通量的角度来看,我的第一直觉是子视图应该调用一个动作,它(通过全局调度系统)更新一个商店。然后,更新后的存储将触发任何想要知道的组件的更新,包括有问题的父组件CommentBox。
换句话说,父组件不会关心,也不想知道它的子组件,CommentForm 正在做什么,或者何时提交表单。相反,它会在商店更新时重新呈现。这意味着触发商店更新的任何东西都会导致 CommentBox 被更新(在我看来这是一件好事;如果有多种提交评论的方式怎么办?)
这让我想到了我的主要问题:在 Flux 架构中是否存在适合将回调方法传递给子组件的情况,或者这通常是一种反模式?
注意:Flux + React.js - Callback in actions is good or bad? 不是同一个问题——我问的是视图中的回调,而不是操作中的回调。
【问题讨论】:
标签: javascript design-patterns reactjs flux