比如在页面中添加和删除‘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. VC 读取服务器上的文件(HTTP方式) [转]

    CString GetStringFromUrl(LPCTSTR pszUrl){    CString str ;    HINTERNET hSession = ::InternetOpen( _ ...

  2. IOS 开发推荐经常使用lib

    1. Mantle Mantle 让我们能简化 Cocoa 和 Cocoa Touch 应用的 model 层.简单点说.程序中常常要进行网络请求,请求到得通常是 json 字符串.我们通常会建一个 ...

  3. const、typedef 、 define总结

    constkeyword const=read only,修饰的为仅仅读变量而不是常量.const修饰的变量不能用作数组的维数也不能放在switch语句的case:之后. 主要作用有: 1.通过把不希 ...

  4. Android——滑动事件冲突解决

    android中的事件类型分为按键事件和屏幕触摸事件,Touch事件是屏幕触摸事件的基础事件. android系统中的每个View的子类都具有下面三个与TouchEvent处理密切相关的方法: (1) ...

  5. mvc已添加了具有相同键的项

    异常详细信息: System.ArgumentException: 已添加了具有相同键的项. 场景重现:在地址栏输入  http://localhost:51709/Home/Index?user[0 ...

  6. vim 自动补全

    1. vim编辑器自带关键字补全 触发: ctrl + n  or ctrl + p 补全命令: <C-n>              普通关键字 [能够根据buffer以及标签文件列表等 ...

  7. 使用kubernetes 官网工具kubeadm部署kubernetes(使用阿里云镜像)

    系列目录 kubernetes简介 Kubernetes节点架构图: kubernetes组件架构图: 准备基础环境 我们将使用kubeadm部署3个节点的 Kubernetes Cluster,整体 ...

  8. mysql 中alter语句中change跟modify的区别

    mysql 中alter语句中change和modify的区别可以使用CHANGE old_col_name column_definition子句对列进行重命名.重命名时,需给定旧的和新的列名称和列 ...

  9. poj3040(双向贪心)

    Allowance Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1540   Accepted: 637 Descript ...

  10. 【重磅干货】看了此文,Oracle SQL优化文章不必再看!

    目录 SQL优化的本质 SQL优化Road Map 2.1 制定SQL优化目标 2.2 检查执行计划 2.3 检查统计信息 2.4 检查高效访问结构 2.5 检查影响优化器的参数 2.6 SQL语句编 ...