-
Notifications
You must be signed in to change notification settings - Fork 324
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
umi + dva,完成用户管理的 CURD 应用 #62
Comments
在windows10下,执行第一步
然后执行
chrome 浏览器报错
|
@qppq54s 这个问题偶现,遇到了刷新就好。 |
你好,想问一下配置文件在哪里,项目需要些一点样式,怎么添加sass |
项目中没有Step 2所说的.webpackrc.js文件,新建这个文件后,如下错误:
这两个文件是不是都会转成webpack的配置,只有后缀的区别? 更新一下,找到答案了:https://github.com/sorrycc/roadhog/blob/master/README_zh-cn.md#%E9%85%8D%E7%BD%AE |
NPM start 后 弹出错误, Failed to compile. ./src/pages/.umi/router.js 15 |
|
After update to [email protected], 15 |
|
@lty6429 npm 依赖没装好吧,删除 node_modules 重装试试。 |
呃,前面问的问题是这个
刚发出去就删除了,没想到作者速度这么快就响应了0.0 我现在是这样解决的,我去单独安装一下umi模块试试
|
删除 node_modules 重装之后还是没有解决这个问题,会是哪里出现了问题呢 |
PATH 环境变量没配好? |
node的环境变量如下
|
这些指令都能用
|
IE10 访问首页,会报“SCRIPT5009: “Map”未定义 umi.js, 行24891 字符3,代码是下面这行: ” |
@liuxj09 新建 src/global.js,在这里加 |
是的。 |
@liuxj09 请入在web容器中运行,比如nginx、apache等。 |
@feitingjun 不用配置,装插件就好了。 |
装了插件了 然后提示 No store found. Make sure to follow the instructions. |
请问umi嵌套路由是如何实现的? |
没有看懂 能说下啥意思吗 没有webpackrc这个文件,新建并加入代码后报错了,新建.webpackrc.js还是.webpackrc有后缀吗 |
@sjqjane .webpackrc跟.webpackrc.js是同一个东西,只是配置的格式不一样前者json方式,后者js方式,取其一。 |
这个默认是localhost:8000,如何改成https呀? |
Step 2. 配置代理,能通过 RESTFul 的方式访问 http://localhost:8000/api/users 修改 .webpackrc.js,加上 "proxy" 配置: "proxy": { 我照着做到step2,没有生成webpackrc.js啊。。。。? |
|
能讲清楚一吗? 两个都 能生成脚手架,到底是用哪个? |
新版本的脚手架用的umi版本改为使用.umirc.js了
|
期待出新版出来 |
你好 这个存在兼容问题,在ie浏览器上打不开,请问怎样解决这个兼容 |
|
不错不错 |
我有个疑惑: |
点击edit, |
This comment has been minimized.
This comment has been minimized.
老项目老教程不是很搭吗?前端更新速度很快,现在再去学习这些比较早的项目问题当然会不少,而且被支持解决的可能性很低。 |
希望能有应用 GraphQL 的例子 |
请问mock数据怎么配呢?直接在mock文件夹下写的js文件无法读取出来的。用postman也不行。 |
nice |
UMI3版本: |
创建和删除都不起作用?是怎么回事 |
For people confused with Directory structure and How to create a UMI project with DVA support use the link to first create a starting project - https://v2.umijs.org/guide/create-umi-app.html#introduce-create-umi Then follow the tutorial :) |
这是来自QQ邮箱的假期自动回复邮件。
您好,我最近正在休假中,无法亲自回复您的邮件。我将在假期结束后,尽快给您回复。
|
本文是 sorrycc/blog#18 的更新版,基于 dva@2、umi 和 umi-plugin-dva。下面会一步步引导大家如何创建一个 CURD 应用,包含查询、编辑、删除、创建,以及分页处理,数据 mock,自动处理 loading 状态等。
全部代码在 umijs/umi-dva-user-dashboard,对 dva 熟练的同学可以看代码。
最终效果:
开始之前:
Step 1. 安装 dva-cli 并创建应用
先安装 dva-cli,并确保版本是 1.0.0-beta.2 或以上。
然后创建应用:
$ dva new user-dashboard $ cd user-dashboard
Step 2. 配置代理,能通过 RESTFul 的方式访问 http://localhost:8000/api/users
修改
.webpackrc.js
,加上"proxy"
配置:然后启动应用:(这个命令一直开着,后面不需要重启)
浏览器会自动开启,并打开 http://localhost:8000。
访问 http://localhost:8000/api/users ,就能访问到 http://jsonplaceholder.typicode.com/users 的数据。(由于 typicode.com 服务的稳定性,偶尔可能会失败。不过没关系,正好便于我们之后对于出错的处理)
Step 3. 生成 users 路由
umi 中文件即路由,所以我们要新增路由,新建文件即可,详见 https://umijs.org/docs/zh-Hans/router.html 。
新建
src/pages/users/page.js
,内容如下:然后访问 http://localhost:8000/users,你会看到
Users Page
的输出。Step 4. 构造 users model 和 service
新增
src/pages/users/models/users.js
,内容如下:新增
src/pages/users/services/users.js
:由于我们需要从 response headers 中获取 total users 数量,所以需要改造下
src/utils/request.js
:切换到浏览器(会自动刷新),应该没任何变化,因为数据虽然好了,但并没有视图与之关联。但是打开 Redux 开发者工具,应该可以看到
users/fetch
和users/save
的 action 以及相关的 state 。Step 5. 添加界面,让用户列表展现出来
我们把组件存在 src/pages/users/components 里,所以在这里新建 Users.js 和 Users.css。具体参考这个 Commit。
需留意两件事:
src/constants.js
改完后,切换到浏览器,应该能看到带分页的用户列表。
Step 6. 添加 layout
添加 layout 布局,使得我们可以在首页和用户列表页之间来回切换。umi 里约定 layouts/index.js 为全局路由,所以我们新增
src/layouts/index.js
和 CSS 文件即可。参考这个 Commit。
注意:
Step 7. 处理 loading 状态
dva 有一个管理 effects 执行的 hook,并基于此封装了 dva-loading 插件。通过这个插件,我们可以不必一遍遍地写 showLoading 和 hideLoading,当发起请求时,插件会自动设置数据里的 loading 状态为 true 或 false 。然后我们在渲染 components 时绑定并根据这个数据进行渲染。
umi-plugin-dva 默认内置了 dva-loading 插件。
然后在
src/components/Users/Users.js
里绑定 loading 数据:+ loading: state.loading.models.users,
具体参考这个 Commit 。
刷新浏览器,你的用户列表有 loading 了没?
Step 8. 处理分页
只改一个文件
src/pages/users/components/Users.js
就好。处理分页有两个思路:
我们用的是思路 2 的方式,好处是用户可以直接访问到 page 2 或其他页面。
参考这个 Commit 。
Step 9. 处理用户删除
经过前面的 8 步,应用的整体脉络已经清晰,相信大家已经对整体流程也有了一定了解。
后面的功能调整基本都可以按照以下三步进行:
我们现在开始增加用户删除功能。
src/pages/users/services/users.js
:src/pages/users/models/users.js
:src/pages/users/components/Users.js
,替换deleteHandler
内容:切换到浏览器,删除功能应该已经生效。
Step 10. 处理用户编辑
处理用户编辑和前面的一样,遵循三步走:
先是 service,修改
src/pages/users/services/users.js
:再是 model,修改
src/pages/users/models/users.js
:最后是 component,详见 Commit。
需要注意的一点是,我们在这里如何处理 Modal 的 visible 状态,有几种选择:
另外,怎么存也是个问题,可以:
此教程选的方案是 2-2,即存 component state,并且 visible 按 user 存。另外为了使用的简便,封装了一个
UserModal
的组件。完成后,切换到浏览器,应该就能对用户进行编辑了。
Step 11. 处理用户创建
相比用户编辑,用户创建更简单些,因为可以共用
UserModal
组件。和 Step 10 比较类似,就不累述了,详见 Commit 。到这里,我们已经完成了一个完整的 CURD 应用。如果感兴趣,可以进一步看下 dva 和 umi 的资料:
(完)
The text was updated successfully, but these errors were encountered: