umi dva demo

model

import {routerRedux} from 'dva/router'
//routerRedux实现在effcts中路由跳转
export default {
  namespace:"user",
  state:{
    userInfo:{
      name:"name0",
      age:"0"
    }
  },
  subscription:{},
  effects:{
    * getUserInfo({payload},{call,put}){
      debugger;
          yield put({
            type:"changeState",
            payload:{
              userInfo:{
                name:"name1",
                age:"1"
              }

            }
          })
    },
    * changeRouter({payload},{call,put}){
      yield put({
        type:"changeState",
        payload:{
          userInfo:{
            name:"name1",
            age:"1"
          }

        }
      })
    }
  },
  reducers:{
    changeState(state,action){
        return {...state,...action.payload}
    }
  }
}

使用model与view关联

import React from 'react'
import {Button} from 'antd'
import {useDispatch,useSelector} from 'dva'
let Login = ({props})=>{
  let userInfo = useSelector(state => state.user.userInfo);
  let dispatch = useDispatch();
   let changeUserInfo = () => {
     dispatch(
       {
          type:"user/getUserInfo",
          payload:{

          }
       }
     )
   }
    return (<div>
      <Button onClick={changeUserInfo}>修改用户信息</Button>
      <p>
        登录
        {userInfo.name}
        {userInfo.age}
      </p>
    </div>)
}

export default Login;

model与view关联方式

1 注解connect (@connect)

function mapStateToProps(state) {
  return { userInfos: state.userInfos};
}

2 react-hooks

let dispatch = userDispatch(),

let userInfo = userSelect(state => state.modeNamespace.info)

dispatch({
  type: 'user/getUserInfo', // 如果在 model 外调用,需要添加 namespace
  payload: {}, // 需要传递的信息
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值