【问题标题】:What is "Tearing" in the context of the React-Redux?在 React-Redux 的上下文中,什么是“撕裂”?
【发布时间】:2019-07-20 08:39:10
【问题描述】:

React-Redux 的 6.0 版提到:

在版本 6 中,所有组件都从上下文中读取相同的当前存储状态值,这意味着树将保持一致并且不会出现“撕裂”。

我知道这是有益的,但我想更好地理解“撕裂”在这种情况下的含义,并且我想了解他们概述的新方法实际上如何减少“撕裂”,如果有人可以的话详细说明。

【问题讨论】:

    标签: javascript reactjs redux react-redux


    【解决方案1】:

    我是 Redux 维护者,我写了那段。

    当与 React 即将推出的“并发模式”一起使用时,这是由 React 团队的 Andrew Clark 作为外部状态管理工具的潜在问题提出的。

    在并发模式下,React 将能够暂停渲染通过树,然后继续计算树的其余部分。

    如果树中的组件正在读取一个外部值,并且在 React 的渲染暂停时该值发生了变化,那么树中的一些上层组件可能已经使用外部值 1 进行了渲染,而后面的一些组件可能已使用外部值 2 进行渲染。这将导致渲染输出不一致,因为树的不同部分根据同一渲染过程中的不同值确定其行为。这是“撕裂”。

    在 v6 中使用 createContext 背后的部分想法是,由于 React 确保给定的渲染通道在任何地方都使用相同的上下文值,因此不会有撕裂的机会。

    v6 实现确实有效,但在某些情况下并没有我们希望的那么高效。我们目前是working on coming up with a different internal implementation that goes back to using direct subscriptions instead。这确实可能意味着再次出现撕裂的可能性,但在这一点上,我们需要坐下来等待 React 团队完成并发模式的整合,然后我们才能花时间了解问题到底是什么。

    【讨论】:

    • 怀疑我们会得到比这更好的答案!我的后续问题是为什么性能会恶化,因为我的直觉是它会有所改善,但您分享的链接回答了这个问题等等。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 2016-07-16
    • 2011-04-04
    • 2012-06-15
    • 2011-04-09
    相关资源
    最近更新 更多