Dva 的connect使用

// 用于将返回的命名空间中的status绑定这个控件中 用来链接组件和状态管理器
export default connect(({ listRed, loading }) => ({  //数组就相当于给当前空间props赋值
    av: listRed, // 要绑定的命名空间
    // submitting: loading.effects['listRed/fetch'],
    submitting: 'apopi',
}))(Login);

js组件中使用connect,指的是将listRed的命名空间中的数据绑订到key为av上,这时,只要listRed中发生变化,就会使这个页面的props发生变化,props相当于{av,submitting}的对象

 

module中

import { qUrl } from '@/services/redirect'

const red = {
    namespace: 'listRed',
    //state 存储数据收到 Action 以后,会更新数据
    state: {
        status: undefined,
    },
    effects: {
        // @param payload 参数
        // @param call 执行异步函数调用接口
        // @param put 发出一个 Action,类似于 dispatch 将服务端返回的数据传递给上面的state
        *fetch({payload}, {call, put}) {
            console.log('获取到数据!!!',payload)
            const response = yield call(qUrl, payload)
            yield put({
                type: 'queryList',   //reducers 中的方法
                payload: response ,
            })
        },
    },
    reducers: {
        queryList(state, { payload }) {
            console.log(payload)
            console.log('reduce')
            return {
                ...state, status: payload.status, type: payload.type
            }
        }
    },
};
export default red;

会将传递给view中的av,间接的给了props

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dva是一个基于Redux、React、Redux-saga等技术的轻量级框架,用于简化React应用的开发。Dva提供了一些约定和API,可以帮助我们更快速地开发React应用。以下是在React中使用dva的简单步骤: 1. 创建一个基于dva的React应用 使用dva-cli工具创建一个新的dva项目: ``` $ npm install dva-cli -g $ dva new myApp ``` 2. 引入dva和相关依赖 在src/index.js文件中引入dva和相关依赖: ```javascript import dva from 'dva'; import './index.css'; // 1. Initialize const app = dva(); // 2. Plugins // app.use({}); // 3. Model // app.model(require('./models/example').default); // 4. Router // app.router(require('./router').default); // 5. Start app.start('#root'); ``` 3. 编写dva model 在src/models/目录下创建一个新的model文件,例如user.js: ```javascript export default { namespace: 'user', state: { list: [], }, reducers: { save(state, { payload: { list } }) { return { ...state, list }; }, }, effects: { *fetch({ payload }, { call, put }) { const { data } = yield call(queryUsers); yield put({ type: 'save', payload: { list: data, }, }); }, }, }; ``` 这个model定义了一个namespace为'user'的model,包括了state、reducers和effects三个部分。其中reducers用于处理同步操作,effects用于处理异步操作。 4. 注册dva model 在src/index.js文件中注册刚才编写的model: ```javascript import dva from 'dva'; import './index.css'; import user from './models/user'; // 1. Initialize const app = dva(); // 2. Plugins // app.use({}); // 3. Model app.model(user); // 4. Router // app.router(require('./router').default); // 5. Start app.start('#root'); ``` 5. 使用dva connect连接组件和model 在需要使用model的组件中,使用dva提供的connect方法连接组件和model: ```javascript import { connect } from 'dva'; function Users({ dispatch, users }) { function handleClick() { dispatch({ type: 'user/fetch', }); } return ( <div> <h1>List of users</h1> <button onClick={handleClick}>Fetch users</button> <ul> {users.list.map((user, index) => ( <li key={index}>{user.name}</li> ))} </ul> </div> ); } export default connect(({ user }) => ({ users: user }))(Users); ``` 这个组件使用connect方法连接了'user'命名空间下的state和dispatch到组件的props中。 6. 运行应用 使用npm start命令启动应用: ``` $ cd myApp $ npm start ``` 以上是在React中使用dva的简单步骤,具体使用可以参照dva官方文档和示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值