dva学习笔记一:快速上手

来源:https://dvajs.com/guide/getting-started.html

一、dva简介

dva是一个轻量级的应用框架,基于redux和redux-saga,内置react-router和fetch,是一个数据流方案,可以简化开发。由蚂蚁金服团队开源提供及维护(https://dvajs.com/)。

二、安装工具

通过npm进行安装:npm install dva-cli -g,网速慢的同学可以将npm改为cnpm。

三、创建应用

执行命令:dva new myproject。会在当前目录下创建名字为myproject的目录,里面由初始化好的项目基础文件。

四、启动应用

执行命令:npm start。浏览器访问:http://127.0.0.1:8000即可看到dva欢迎页面。

五、开发

1、使用antd

安装 antd 和 babel-plugin-import 。babel-plugin-import 是用来按需加载 antd 的脚本和样式的

npm install antd babel-plugin-import --save

编辑 .webpackrc,使 babel-plugin-import 插件生效。

{
+  "extraBabelPlugins": [
+    ["import", { "libraryName": "antd", "libraryDirectory": "es", "style": "css" }]
+  ]
}

 2、定义路由

新建 route component routes/Products.js,内容如下:

import React from 'react';const Products = (props) => (

List of Products

);export default Products;

添加路由信息到路由表,编辑 router.js :

+ import Products from './routes/Products';
...
+ 

然后在浏览器里打开 http://localhost:8000/#/products ,你应该能看到前面定义的 

 标签

3、编写 UI Component

新建 components/ProductList.js 文件:

import React from 'react';
import PropTypes from 'prop-types';
import { Table, Popconfirm, Button } from 'antd';const ProductList = ({ onDelete, products }) => {const columns = [{title: 'Name',dataIndex: 'name',}, {title: 'Actions',render: (text, record) => {return ( onDelete(record.id)}>);},}];return ();
};ProductList.propTypes = {onDelete: PropTypes.func.isRequired,products: PropTypes.array.isRequired,
};export default ProductList;

4、定义 Model

新建 model models/products.js :

export default {namespace: 'products',state: [],reducers: {'delete'(state, { payload: id }) {return state.filter(item => item.id !== id);},},
};

然后别忘记在 index.js 里载入他:

// 3. Model
+ app.model(require('./models/products').default);

5、connect 起来

编辑 routes/Products.js,替换为以下内容:

import React from 'react';
import { connect } from 'dva';
import ProductList from '../components/ProductList';const Products = ({ dispatch, products }) => {function handleDelete(id) {dispatch({type: 'products/delete',payload: id,});}return (

List of Products

); };// export default Products; export default connect(({ products }) => ({products, }))(Products);

最后,我们还需要一些初始数据让这个应用 run 起来。编辑 index.js

- const app = dva();
+ const app = dva({
+   initialState: {
+     products: [
+       { name: 'dva', id: 1 },
+       { name: 'antd', id: 2 },
+     ],
+   },
+ });

刷新浏览器,应该能看到以下效果:

 

6、构建应用

完成开发并且在开发环境验证之后,就需要部署给我们的用户了。先执行下面的命令:

$ npm run build

几秒后,输出应该如下:

> @ build /private/tmp/myapp
> roadhog buildCreating an optimized production build...
Compiled successfully.File sizes after gzip:82.98 KB  dist/index.js270 B     dist/index.css

build 命令会打包所有的资源,包含 JavaScript, CSS, web fonts, images, html 等。然后你可以在 dist/ 目录下找到这些文件。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部