1. 先创建models 里面是存储的状态和操作状态的方法

models 文件

export default{

  namespace: 'product',

  state:{

​    productList: [{

​      name:"牛逼"

​    },{

​      name:"卢本伟"

​    }],

  },

  reducers:{

​    upData(state, action){

​      let currentProductList = deepClone(state)

​      // 深拷贝

​      currentProductList.productList.push( action.paylod)

​      return currentProductList    //返回一个新的state对象

​    }

  }

}

//克隆方法
function deepClone(arr){

  let _obj = JSON.stringify(arr)

  let objClone = JSON.parse(_obj)

  return objClone

}


2. 在 index.js 中引入 modelsapp.model(require(’./models/product’).default);

3.在页面中使用connect 连接容器组件 ( 操作redux的 model )

import React from "react";

import { connect, useDispatch } from "dva";



const ProdePage = (props) => {

  const current = { name: 123 }



  return <div>

​    <button onClick={() => {

​        props.dispatch({

​          type: "product/upData", paylod: current

​        })

​      }}>我是按钮</button>

  </div>

}



import React from "react";

import { connect, useDispatch } from "dva";



const mapStateProps = (state) => {

  console.log(state, "redux里的状态") //映射状态到页面组件中 通过props 拿到state 和 方法

  return {        //将状态作为返回值传入到页面组件中 state是所有models的状态文件

​    productLists: state.example

  }

}

// 第一个参数存放page

export default connect(mapStateProps)(ProdePage)

类式组件

class ProdePage extends *React*.Component {

  render() {

​    const current = { name: "我是天王" }



​    return <div>

​      <button onClick={() => {

​        this.props.dispatch({

​          type: "product/upData", paylod: current

​        })

​      }}>我是按钮</button>

​    </div>

  }

}



const mapStateProps = (*state*) => {

  console.log(*state*, "redux里的状态") //映射状态到页面组件中 通过props 拿到state 和 方法

  return {        //将状态作为返回值传入到页面组件中 state是所有models的状态文件

​    productLists: state.example

  }

}

// 第一个参数存放page

export default connect(mapStateProps)(ProdePage)
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐