react项目 umi环境 redux 使用

namespace

命名空间,用于区分多个model

state

用于存放私有数据

effects 使用

effects 是 model的一个方法,用于处理数据数据,比如处理接口请求
model.ts文件

 effects: {
    *fetchData({ payload }, { call, put }) {
      //异步数据调用service接口的行为叫做call(召唤)
      // payload: dispatch调用时传入的数据
      yield call(loadList, payload);
      console.log(payload, 'payload')
      // 异步的数据不能直接调回给页面,要先给(put)同步,再给(connect)页面
      // put 传入的是 reducers方法
      yield put({
        type: 'saveFormValues',
        payload,
      });
    },
  },

页面调用effects中的方法
index.tsx文件

 dispatch({
    type: '命名空间/fetchData',
    payload: data // 传入的数据
 })

reducers 使用

是一个纯函数,接受旧的state和新的action,返回新的state.
reducer是改变state,触发action提交的唯一方式,它接收两个参数:state和action,state是原始store中的state,触发更改之后就是提交更改前的state,action代表提交行为(type)和payload。

reducers: {
   saveFormValues(state, { type, payload}){
      // return 的数据,相当于更改了state 数据
      return {
        ...state,
        ...payload
      };
   },
 }

connect 使用

model 是一个公共保存数据流的地方
model 数据传入页面,使用 connect方法 作为连接
index.tsx文件

import React, { Component } from 'react'
import { connect } from 'umi'  // 使用umi架构

export class index extends Component {
  const { name } = this.props
  render() {
    return (
      <div>
        姓名:{ name }
      </div>
    )
  }
}
//页面获取state内的数据,传入props
const mapStateToProps = (state) => ({
  name: state.命名空间.name
})
// 页面调用effects中的方法,传入props
const mapDispatchToProps = {
  
}

export default connect(mapStateToProps, mapDispatchToProps)(index)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值