Javascript 网页代码分裂导致路线改变时动画跳跃?
因此,我使用代码拆分将我的(相当大的)应用程序拆分为可管理的块,如下所示:Javascript 网页代码分裂导致路线改变时动画跳跃?,javascript,reactjs,webpack,redux,react-router,Javascript,Reactjs,Webpack,Redux,React Router,因此,我使用代码拆分将我的(相当大的)应用程序拆分为可管理的块,如下所示: const getSettings = (nextState, cb) => { require.ensure([], require => { cb(null, require('../containers/Settings/Settings')) }, 'settings') } 这可能是一种让Webpack在某些点上拆分的非常基本的方法,但到目前为止,它对我很有效 然而,我遇到了严重的
const getSettings = (nextState, cb) => {
require.ensure([], require => {
cb(null, require('../containers/Settings/Settings'))
}, 'settings')
}
这可能是一种让Webpack在某些点上拆分的非常基本的方法,但到目前为止,它对我很有效
然而,我遇到了严重的挫折。因为这些区块必然是异步的,当进入依赖于未获取区块的路由时,实际路由会发生变化(通过react router
),但实际子组件更新需要几秒钟,因此会留下一个起伏的动画
我如何才能强制反应路由器
在加载所有必需的块之前不触发位置更改
我正在使用
react router 3.0.0
和webpack 1.13.2
我在使用require时遇到了同样的问题。请确保使用getComponent
使用react router 3。我的解决方案看起来很肮脏,但确实有效。我在一些地方预先获取了一个组件包,这样当它们被实例化时,它们就可以用于路由了
这只是一个需要的功能。请确保导入并执行组件。仍然可以减少你的初始负荷,我认为这是一个目标 因此,正如预期的那样,社区关于这样一个利基问题的文档/信息非常少
我绕过它的方式比预期的要简单:我只是在我的顶级应用程序子组件中倾听更改,而不是路由更改,因为路由更改不可信
看起来是这样的:
<FadeProps animationLength={40}>
<main style={styles.appContent} key={children.type.displayName}>
{route.status === 200 && children}
{route.status === 404 && <NotFound />}
</main>
</FadeProps>
{route.status==200&&children}
{route.status==404&&}
注意,键是this.props.children.type.displayName
,它只有在加载块并且组件可用时才会实际更改。我注意到在新的路由位置有2-4个带有旧组件的渲染,因此子级是唯一可以信任的数据。oops!太酷了@AbdennourTOUMI什么?给人留下深刻印象的是,你正在使用哪个版本的react路由器?当前版本(v.2、v.3)中有您可能应该使用的/getComponents()API。下一个版本(v.4-似乎是在测试版,即将发布)是一个不同的野兽-还没有找到它。另外,我从标签中假设您使用的是Webpack v.1而不是v.2。@NikosParaskevopoulos我使用的是react router 3.0.0
和Webpack 1.13.2
。getComponent
函数确实获得了一个异步组件,但只有在调用LOCATION\u CHANGE
之后,我才知道位置更改是否需要数据(块)获取……嗯,我认为这不是一个好的解决方案。“我的身份验证要求”区域涉及一个50%的用户永远不需要的重脚本(300kb)。一定有办法让react router
调用LOCATION\u CHANGE
以异步方式…我相信我找到了一个解决我自己的动画问题的方法,不确定它是否有帮助,但请随意查看。