Woudn的React输出取决于使用的对帐算法吗?

时间:2018-06-01 14:46:00

标签: javascript reactjs

我无法理解协调算法是如何实现细节的,因为我觉得如果使用不同的协调算法或使用了一个天真的(总是重新渲染)方法,应用程序的输出会有所不同。

https://reactjs.org/docs/reconciliation.html处的文档说:

  

重要的是要记住,协调算法是一个实现细节。 React可以在每个动作上重新呈现整个应用程序;最终结果是一样的。为了清楚起见,在这种情况下重新渲染意味着为所有组件调用渲染,这并不意味着React将卸载并重新安装它们。它只会按照前面章节中规定的规则应用差异。

我会使用术语"天真的方法"引用方法:

  

React可以在每个动作上重新呈现整个应用

我多次重读这个页面并尝试阅读其他资源,但仍有疑问:

  1.   

    它只会按照规定中的规则应用差异    前几节

    通过应用差异,我们不使用差异算法  本身而不是使用天真的方法? (同时解释天真  方法是本声明的目标)。

  2. 请考虑以下示例:

    render() {
      if (this.state.useFooter) {
        return (
          <div>
            <Timer />
            <Footer />
          </div>
        );
      } else {
        return (
          <div>
            <Timer />
          </div>
        );
      }
    }
    

    此处假设this.state.useFooterfalse,因此仅呈现 Timer(这是一个有状态的组件)。现在,假设 this.state.useFooter更改为true。 React只会触发一个 更新Timer组件(即呼叫 shouldComponentUpdate()等等......)并安装Footer。但是,如果我们 是使用天真的方法,结果会是什么?

    a)如果它是相同的,那么有人可以告诉React的例子 协调/差异算法提供更好的性能?

    b)如果不同,那么我猜测差异就是那样 安装了新的Timer。如果是这种情况,那是否意味着 React的算法通过更新而不是挂载来优化?在 在哪种情况下输出会有所不同,从而使算法不仅仅是 实施细节。

  3. 提前致谢!

0 个答案:

没有答案