全局状态管理与数据流
组件结构决定通信方式
一般的组件分布是一个树的结构,这种结构决定了其基本的通信方式。
每个组件(也可以称之为节点)包含自身的数据和方法,暂统称为组件的状态(state),props可以将父组件的状态流向子组件,这是一种单向的数据流,也是组件树中最基础的通信方式,意味着并不建议在子组件中通过修改props来更改父组件的状态。试想,倘若这样,那么父组件状态的修改来自于哪一个子组件的溯源是令人头疼的问题且会影响到流经的所有的子组件。 props的缺点显而易见,它需要在每一个节点停留,然后传递给下一个节点。(在vue中存在$attrs和$listeners两个实例属性,它们看起来像是折中方式,$attrs和$listeners包含了父作用域中不作为prop被识别的属性和方法绑定,意味着可以在父孙组件间实现点对点通信)。这样麻烦而且容易造成代码冗余,在vue中,provide-inject可以直接将状态从一个节点广播至所有的后代节点,而不需要做节点停留。它有很多的使用场景,例如主题切换,只需要在根节点上设置切换好的状态,那么所有inject到的
全局状态管理与数据流最先出现在Python成神之路。
共有 0 条评论