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;

 

转载于:https://www.cnblogs.com/wdxue/p/8134373.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值