We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
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-cli脚手架,会应有一个新的dva命令,使用它来初始化一个新的dva项目,然后它会自动安装所需的依赖,然后进入该项目文件夹,然后执行npm start启动项目
dva-cli
dva
npm start
npm install dva-cli -g dva -v dva new dva-quickstart cd dva-quickstart npm start
在routes目录下新建Products.jsx组件
routes
Products.jsx
import React from 'react'; // 是帮你连接组件和redux import { connect } from 'dva'; // 这是dispatch和products是来自于props的方法,是connect后提供的 // {dispatch, products}等价于props.dispatch和props.products const Products = ({ dispatch, products }) => { function handleDelete(id, e) { // 获取按钮传递的数据 console.log(id, e) // 获取Model的state的数据 console.log(products) dispatch({ // 触发Model中的action方法 type: 'products/delete', // 这里是传过去Model的数据 payload: { name: "lemon", age: 18, skill: ['ps', 'css', 'js'] }, }); } return (<div> <h2>Dva连接Redux的示例</h2> <button onClick={handleDelete.bind(this, 1)}>连接Model</button> </div>) }; export default connect(({ products }) => ({ products, }))(Products);
在上面的路由组件中我们看到connect,由于dva提供了connect 方法,这个 connect就是react-redux的connect方法,帮助我们建立组件和Model之间关系
connect
connect 方法
react-redux
Model
然后添加路由信息到路由表,编辑router.js
router.js
import Products from './routes/Products'; <Route path="/products" exact component={Products} />
可以使用Model来封装一个类似于react-redux的数据仓库,来交互组件之间的数据
在models目录下新建products.js文件
models
products.js
export default { namespace: 'products', // state: { // author: "wscats" // }, state:{},//如果这里为空可以在index.js的dva()方法中初始化值 reducers: { 'delete'(state, { payload }) { // state是Model里面存放的state数据 // payload是获取来自于Product.jsx组件的dispatch传过来的payload参数 console.log("触发了redux", state, payload) // 这里是返回新的state数据 return { ...state, ...payload } }, // 可以存放多个action的方法 add(state, { payload }) { } }, };
然后在index.js文件里面载入它
index.js
// 3. Model app.model(require('./models/products').default);
如果已经在state里面初始化了数据,那就可以忽略下面这一步,但如果state没有定义值,可以在index.js中的dva()方法中初始化值
state
dva()
// 1. Initialize const app = dva({ initialState: { products: { author: "Eno Yao" } } });
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Uh oh!
There was an error while loading. Please reload this page.
安装
全局安装
dva-cli
脚手架,会应有一个新的dva
命令,使用它来初始化一个新的dva
项目,然后它会自动安装所需的依赖,然后进入该项目文件夹,然后执行npm start
启动项目npm install dva-cli -g dva -v dva new dva-quickstart cd dva-quickstart npm start
路由
在
routes
目录下新建Products.jsx
组件在上面的路由组件中我们看到
connect
,由于dva
提供了connect 方法
,这个connect
就是react-redux
的connect
方法,帮助我们建立组件和Model
之间关系然后添加路由信息到路由表,编辑
router.js
Model
可以使用
Model
来封装一个类似于react-redux
的数据仓库,来交互组件之间的数据在
models
目录下新建products.js
文件然后在
index.js
文件里面载入它如果已经在
state
里面初始化了数据,那就可以忽略下面这一步,但如果state
没有定义值,可以在index.js
中的dva()
方法中初始化值The text was updated successfully, but these errors were encountered: