zoukankan      html  css  js  c++  java
  • 整理

    单向数据流 and 双向数据流

    单向数据流

    单项数据流并不是React独有的概念,但是作为JavaScript开发人员,这可能是您第一次听到他。

    通常,此概念意味着数据只有一种方式可以传输到应用程序的其他部分。

    在React中,这意味着:

    • 状态传递给视图和子组件
    • 操作由视图触发
    • 动作可以更新状态
    • 状态更新将传递到视图和子组件

    该视图是应用程序状态的结果。成员只有在采取行动时才能改变。当动作发生时,状态被更新。

    得益于单项绑定,数据不能以相反的方式流动(例如,双向数据会发生这种情况),这具有一些关键优势:

    • 她更不容易出错,因为您可以更好地控制数据。
    • 她更容易调试,因为你知道是从哪儿来。
    • 因为该库已经知道系统各部分的边界,所以效率更高。

    状态始终由一个组件拥有。受此状态影响的任何数据只能影响其下的组件:其子组件。

    更改组件上的状态永远不会影响其父代,其兄弟姐妹或应用程序中的任何其他组件:仅影响其子代。

    这就是状态通常在组件树中上移的原因,以便可以在需要访问它的组件之间共享状态。

    React的一大创新,就是把每一个组件都看成一个状态机,组件内部通过state来维护组件状态的变化,这也是state唯一的作用。

    双向数据流

    无论数据改变,或是用户操作,都能带来相互的变动,自动更新。

    优缺点

    单向数据流优缺点

    优点

    1、所有状态的改变可记录、可跟踪,源头易追溯。
    2、所有数据只有一份,组件数据只有唯一的入口和出口,使得程序更直观更容易理解,有利于应用的可维护性。
    3、一旦数据变化,就去更新页面(data-页面),但是没有(页面-data)
    4、如果用户在页面上做了变动,那么就手动收集起来(双向是自动),合并到原有的数据中。

    缺点

    1、HTML代码渲染完成,无法改变,有新数据,就需把旧HTML代码去掉,整合新数据和模板重新渲染。
    2、代码量上升,数据流转过程变长,出现很多类似的样板代码。
    3、同时由于对应状态独立管理的严格要求(单一的全局store),在处理局部状态较多的场景时(如用户输入交互较多的“富表单型”应用),会显得啰嗦及繁琐。

    双向数据绑定的优缺点

    优点

    1、用户在视图上的修改会自动同步到数据模型中去,数据模型中值的变化也会立刻同步到视图中去。
    2、无需进行和单向数据绑定的那些相关操作。
    3、在表单交互较多的场景下,会简化大量业务无关的代码。

    缺点

    1、无法追踪局部状态的变化。
    2、“暗箱操作”,增加了出错时debug的难度。
    3、由于组件数据变化来源入口变得可能不止一个,数据流转方向易紊乱,若在缺乏“管制”手段,血崩。

  • 相关阅读:
    2008北京奥运男子100M决赛黑人的竞技场
    Bit,Bytes,KB,MB,GB,TB,PB,EB,ZB,YB
    请教:TableLayoutPanel.Controls.Add中的下一个可行的单元位置(.net2.0,C#)
    ORACLE获取表所占用空间大小计算和展示
    C#中创建对象的方式
    一个怕360的病毒
    ubuntu以root权限登录
    安装ubootmkimage
    安装配置armlinuxgcc
    移动虚拟机注意问题
  • 原文地址:https://www.cnblogs.com/xiaoxu-xmy/p/13806012.html
Copyright © 2011-2022 走看看