Closed ClarkXia closed 2 years ago
目前 ice.js 应用最外面的组件是 <BrowserEntry />,它主要负责是事情是监听路由变化,加载下一页资源后,通过 setState 的方式更新 location 对象,进而改变当前渲染的路由组件。
<BrowserEntry />
setState
https://github.com/ice-lab/ice-next/blob/c0981492095af1b41441acc4d17923850195e028/packages/runtime/src/runClientApp.tsx#L195
对于全局 Provider 组件来说,它们是 <BrowserEntry /> 的子组件,每当路由改变,必定会触发它重新渲染(children 会改变),导致一些初始化数据的逻辑会重新执行(比如 auth 和 store)
从正常的逻辑来看,全局 Provider 应该只能在应用初始化的时候只渲染一次,应该是 <BrowserEntry /> 的父组件。
auth 和 store 这些初始化数据的逻辑 是不会依赖 location 信息的?切换路由 也不需要监听?
中间有一层 Anonymous 可以一并处理掉
Anonymous
不需要
目前 ice.js 应用最外面的组件是
<BrowserEntry />
,它主要负责是事情是监听路由变化,加载下一页资源后,通过setState
的方式更新 location 对象,进而改变当前渲染的路由组件。https://github.com/ice-lab/ice-next/blob/c0981492095af1b41441acc4d17923850195e028/packages/runtime/src/runClientApp.tsx#L195
对于全局 Provider 组件来说,它们是
<BrowserEntry />
的子组件,每当路由改变,必定会触发它重新渲染(children 会改变),导致一些初始化数据的逻辑会重新执行(比如 auth 和 store)从正常的逻辑来看,全局 Provider 应该只能在应用初始化的时候只渲染一次,应该是
<BrowserEntry />
的父组件。