zoukankan      html  css  js  c++  java
  • react之redux增加删除数字

    比如在页面中添加和删除‘222’

    action.js

    export const ADD= 'ADD';
    export const RED='RED';
    export const add=(str)=>{
      return{
        type:'ADD',
        payload:str
      }
    };
    export const red=(str)=>{
      return {
        type:'RED',
        payload:str
      }
    };

    reducer.js

    import {combineReducers} from 'redux';
    import {ADD,RED} from '../action';
    const initialState = {
      cartData:["1","2","3"]
    };
    const cartReducer=(state=initialState,action)=>{
      state = JSON.parse(JSON.stringify(state));//深拷贝数据
      switch (action.type){
        case ADD:
          state.cartData.push('222');
          return {cartData:state.cartData};
          break;
        case RED:
          state.cartData.pop();
          return {cartData:state.cartData}
        default:
          return state;
      }
    };
    const reducer = combineReducers({
      cartReducer
    });
    export default reducer;

    addStr.js

    import React,{Component} from 'react'
    import { connect } from 'react-redux';
    class AddStr extends Component{
      constructor(props){
        super(props)
      }
      render(){
        const {cartData,addCartData}= this.props;
        const datas=this.state.datas;
        console.log(datas)
        return(
          <div className='adds'>
            <ul>
              {
                cartData.map((item,index)=>{
                   return <li key={index}>{item}</li>
                })
              }
            </ul>
            <button onClick={()=>addCartData()}>添加字符</button>
          </div>
        )
      }
    }
    function mapStateToProps(state) {
      return{
        cartData:state.cartReducer.cartData
      }
    }
    function mapDispatchToProps(dispatch) {
      return{
        addCartData:()=>dispatch({type:'ADD'})
      }
    
    }
    export default connect(
      mapStateToProps,
      mapDispatchToProps
    )(AddStr);

    redStr.js

    import React, { Component } from 'react';
    import { connect } from 'react-redux';
    class RedStr extends Component{
      constructor(props){
        super(props);
      };
      render(){
        const {cartData,addCartData}= this.props;
        return (
          <div>
            <button onClick={()=>addCartData()}>删除字符串</button>
          </div>
        )
      }
    }
    function mapStateToProps(state) {
      console.log(state.cartReducer);
      return{
        cartData:state.cartReducer.cartData
      }
    }
    function mapDispatchToProps(dispatch) {
      return{
        addCartData:()=>dispatch({type:'RED'})
      }
    }
    export default connect(
      mapStateToProps,
      mapDispatchToProps
    )(RedStr);

    roots.js

    import React, { Component } from 'react';
    import AddStr from '../components/addStr'
    import RedStr from '../components/redStr'
    class Roots extends Component{
      constructor(props){
        super(props);
      }
      render(){
        return (
          <div>
            <AddStr/>
            <RedStr />
          </div>
        )
      }
    }
    export default Roots;
  • 相关阅读:
    批量修改文件
    mysql-5.5.32-linux2.6-x86_64.tar.gz 二进制源码定制安装MySQL服务器
    源码搭建nginx服务器
    Python--安装
    k8s-修改线程数
    容器卡在terminate状态无法删除
    扩/
    磁盘分区+挂载
    499
    清理磁盘
  • 原文地址:https://www.cnblogs.com/wdxue/p/8134373.html
Copyright © 2011-2022 走看看