比如在页面中添加和删除‘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;

react之redux增加删除数字的更多相关文章

  1. 【前端,干货】react and redux教程学习实践(二)。

    前言 这篇博文接 [前端]react and redux教程学习实践,浅显易懂的实践学习方法. ,上一篇简略的做了一个redux的初级demo,今天深入的学习了一些新的.有用的,可以在生产项目中使用的 ...

  2. 从零开始配置TypeScript + React + React-Router + Redux + Webpack开发环境

    转载请注明出处! 说在前面的话: 1.为什么不使用现成的脚手架?脚手架配置的东西太多太重了,一股脑全塞给你,我只想先用一些我能懂的库和插件,然后慢慢的添加其他的.而且自己从零开始配置也能学到更多的东西 ...

  3. 实例讲解react+react-router+redux

    前言 总括: 本文采用react+redux+react-router+less+es6+webpack,以实现一个简易备忘录(todolist)为例尽可能全面的讲述使用react全家桶实现一个完整应 ...

  4. 最新的chart 聊天功能( webpack2 + react + router + redux + scss + nodejs + express + mysql + es6/7)

    请表明转载链接: 我是一个喜欢捣腾的人,没事总喜欢学点新东西,可能现在用不到,但是不保证下一刻用不到. 我一直从事的是依赖angular.js 的web开发,但是我怎么能一直用它呢?看看最近火的一塌糊 ...

  5. react脚手架改造(react/react-router/redux/eslint/karam/immutable/es6/webpack/Redux DevTools)

    公司突然组织需要重新搭建一个基于node的论坛系统,前端采用react,上网找了一些脚手架,或多或少不能满足自己的需求,最终在基于YeoMan的react脚手架generator-react-webp ...

  6. React 与 Redux 在生产环境中的实践总结

    React 与 Redux 在生产环境中的实践总结 前段时间使用 React 与 Redux 重构了我们360netlab 的 开放数据平台.现将其中一些技术实践经验总结如下: Universal 渲 ...

  7. immutable.js 在React、Redux中的实践以及常用API简介

    immutable.js 在React.Redux中的实践以及常用API简介 学习下 这个immutable Data 是什么鬼,有什么优点,好处等等 mark :  https://yq.aliyu ...

  8. 结合React使用Redux

    前面的两篇文章我们认识了 Redux 的相关知识以及解决了如何使用异步的action,基础知识已经介绍完毕,接下来,我们就可以在React中使用Redux了. 由于Redux只是一个状态管理工具,不针 ...

  9. 基于jQuery表格增加删除代码示例

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. oralce中相关的概念整理

    [数据库名]  概念:就是一个数据库的标识,作用等同于我们的身份证的作用,假设一台机器上安装了多个数据库,那么每一个数据库都会有一个数据库名称相应,这些数据库名称在数据库被创建的时候,数据库名称也会被 ...

  2. can-i-win(好)

    https://leetcode.com/problems/can-i-win/ package com.company; import java.util.*; class Solution { / ...

  3. jsp网页在浏览器中不显示图片_eclipse环境下配置tomcat中jsp项目的虚拟路径

    遇到的问题是这种,在jsp网页中嵌入了本地的图片,由于会用到上传到服务器的图片,所以没有放到项目里面,而是把全部图片单独放到一个文件夹里,然后打算使用绝对路径把要显示的图片显示出来.比方是放在了E盘的 ...

  4. NYOJ 38 布线问题_(解法1 Kruskal算法)

    时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描写叙述 南阳理工学院要进行用电线路改造.如今校长要求设计师设计出一种布线方式,该布线方式须要满足下面条件: 1.把全部的楼都供 ...

  5. sql的一些知识_order by

    注释 SELECT name FROM userinfo #这是注释 /* 这是多行注释 */ order by 排序() SELECT username FROM userinfo ORDER BY ...

  6. python 中的电子邮箱的操作

    通过python 的代码实现对email的操作,包括发送邮件和读取邮件. import poplib import smtplib from email.header import decode_he ...

  7. 移植alsa-lib遇到的问题

    移植alsa-lib遇到的问题 linux audio    alsa lib    VERSIONED_SYMBOLS 这两天移植alsa lib时遇到了一个问题,被困住了好久. 做个记录,以后再被 ...

  8. Use the command of tar to multi-part archive method.

    We usually meet the package too large to upload internat space when upload have a limited .So we nee ...

  9. Mtk Camera

    MTK6577+Android之Camera驱动 http://blog.csdn.net/loongembedded/article/details/41695205 MTK Camera 开机启动 ...

  10. Canvas学习笔记——动画中摩擦力的运用

    摩擦力是与物体运动方向相反的力.我们在处理物体运动时,常把物体分解水平(X轴)方向和竖直(Y轴)方向的运动(比如平抛运动),但在处理摩擦力时,如果把摩擦力分解为X轴和Y轴上的阻力,就会出现某条轴上速度 ...