dkvirus / dva

介绍 dva 所涉及的技术,形成一个完整体系
52 stars 12 forks source link

dva升级2.0版本遇到的问题小结 #8

Closed dkvirus closed 5 years ago

dkvirus commented 7 years ago

1. 使用 browserHistory

dva 配置 browserHistory 实践总结

2. 在 router.js 中配置动态加载。

import dynamic from 'dva/dynamic';
const UserPageComponent = dynamic({
  app,
  models: () => [import('./models/users'),],
  component: () => import('./routes/UserPage'),
});

注:app.router() 方法中参数为 (history, app)

3. 处理全局错误

import { message } from 'antd';
const app = dva({
  onError (error) {
    message.error(error.message);
  },
});

4. 设置别名

通过工具包将相对路径写成绝对路径。并且还要处理 eslint 的校验。

安装 babel-plugin-module-resolver 包

npm install babel-plugin-module-resolver --save-dev

在 .roadhog 文件中配置别名

"extraBabelPlugins": [
    ["module-resolver", {
      "alias": {
        "routes": `${__dirname}/src/routes`,
        "models": `${__dirname}/src/models`,
        "services": `${__dirname}/src/services`,
        "utils": `${__dirname}/src/assets/utils`
      }
    }]
],

如果 eslint 不能通过,在 .eslintrc 文件中添加规则

"rules": {
    "import/no-unresolved": 0,
}

实践中发现:只有写在文件顶部的 import 中的路径可以使用路径别名。在 js 方法里的 import 无法使用别名。

5. 使用 dll 加速启动

注:road-dlls 还没有发布成 npm 包,无法通过 npm 进行下载。

能正常启动,但是浏览器中页面报错:roadhog is not define.

6. 使用 cross-env 启动

package.json 文件中进行配置,使用 cross-env,在 linux/windows/mac 系统都可以运行 roadhog server。

"scripts": {
    "dev": "cross-env BROWSER=none HOST=0.0.0.0 roadhog server"
},

7. 配置代理

在 .roadhogrc.js 中添加配置属性

"proxy": {
    "/api/v1": {
        "target": "http://localhost:8080/api",
        "changeOrigin": true,
        "pathRewrite": { "^/api/v1" : "/v1" }
    }
},

8. dva-loading 处理页面过渡效果

dva-loading 实践用法

9. dva 中使用 react-router 4.0 实践总结

dva 中使用 react-router 4.0 实践总结

birdycn commented 6 years ago

dva2.0还可以用onerror钩子?

dkvirus commented 6 years ago

@birdycn 我没用过 onerror 钩子,我的错误处理都是在 axios 封装的 request 方法里统一拦截处理的。