You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在React/Redux应用中仅在根层级设置单个订阅者是否为最佳实践?

单订阅者全量重渲染的React+Redux大型应用实践

嘿各位,去年我用React和Redux开发了一个规模不小的应用,当时采用了一种挺有意思的模式——整个应用只在根层级设置一个订阅者,每次状态变化就重新渲染整个应用。

先给大家看看核心的代码模式:

const myApp = () => {
  store.subscribe(render);
  render();
};

module.exports = myApp;

const render = () => {
  const rootDOMElement = document.getElementById('root');
  ReactDOM.render(
    <section className="myApp">
      {/* 应用的所有组件内容都在这里 */}
    </section>,
    rootDOMElement
  );
};

本质上,这个模式的核心就是:每次Redux store的状态发生变化时,都会触发根级的重新渲染,把整个应用从头渲染一遍。我当时是明确知晓这种做法的取舍的——虽然“全量重渲染”听起来有点吓人,但React的虚拟DOM diff机制其实能帮我们优化大部分不必要的DOM更新,再加上合理的组件记忆化处理(比如用React.memo、useMemo这些API),在大型应用里这种模式也能跑起来很顺畅。

而且这种模式还有个好处:不用在各个子组件里写useSelector或者connect,整个应用的状态订阅逻辑都收拢在根层级,维护起来反而简单不少,适合状态变更逻辑相对集中的场景。

内容的提问来源于stack exchange,提问作者James Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:19:50