-
Notifications
You must be signed in to change notification settings - Fork 3.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
关于 dva@1.2 和动态加载的问题 #533
Comments
@sorrycc 使用辅助方法注册 model,在react-native 下(非动态加载)还是有问题。 |
@rendongsc model 是动态载入的吗? 重新进入系统为啥只执行 app.model 的代码呢? |
不是动态载入的,重新进入系统为什么要再次执行app.model原因不清楚。
|
可以先加 try...catch 解决这个问题,有时间可以研究下为啥执行多次。 function registerModel(app, model) {
try {
app.model(model);
} catch(e) {}
} |
我这边报错是因为注册代码写了两次, app.model(require("./models/users")); // 2. Plugins // 3. Model |
@sorrycc 老师,想问下根据路由动态加载路由和在index.js上同时加载,性能相差会很大吗 |
@AsceticBoy 项目大的话会相差比较大,因为下载时间长了。 |
@sorrycc 大叔,我想请教一个问题:
这个Main.js只是一个公共容器,包含公共的头部组件和底部组件,我需要在中间去动态的加载不同 |
Android 的 notify 进入 app ,这个 internal 的 namespace 无论如何都会被 inject, 因为 checkmodel 的原因,crash |
@buhe 能否提供一个最小可复现代码 demo? 什么情况下会重复调用 |
所以现在这问题还是依旧吗?
function registerModel(app, model) {
try {
app.model(model);
} catch(e) {}
} 而不建议使用 const cached = {};
function registerModel(app, model) {
if (!cached[model.namespace]) {
app.model(model);
cached[model.namespace] = 1;
}
} 是这么理解吗? |
由于 dva@1.2 中引入了
app.unmodel
以及为app.model
增加了冲突校验,不允许对相同的 namespace 注册多次 model,而动态加载路由需要多次执行 app.model,所以很多人升级到 1.2 时就出错了。典型出错
建议方案
在 router.js 里用一个辅助方法注册 model 。
使用
参考
dvajs/dva-example-user-dashboard@df2a7a0
The text was updated successfully, but these errors were encountered: