用create-react-app创建一个项目

  1. 执行 npm i create-react-app -g
  2. 执行 create-react-app redux-example
  3. 执行 cd redux-example
  4. 执行 npm start
    浏览器出现以下界面,说明项目创建好了并成功运行

创建相关组件

  1. 在根目录下创建routes文件夹
  2. 在routes下创建header和side文件夹
  3. 在header和side下创建header的容器组件和ui组件,代码见https://gitee.com/huruqing/redux-example

redux相关配置

  1. 安装redux和react-redux
    npm i redux react-redux --save-dev
  2. 创建side的reducer
// 创建action creatorexport function showSideAction(payload) {return {type: 'SHOW-SIDE',payload,}
}// 设置state初始值
const initState = {show: false
}// reducer
export default (state=initState,action)=> {switch (action.type) {case 'SHOW-SIDE':return {...state,show: action.payload}default:return state;}
}

header的reducer

// 创建action creatorexport function setTitleAtion(payload) {return {type: 'SET-TITLE',payload,}
}// 设置state初始值
const initState = {title: '卖座网'
}// reducer 纯函数
export default (state=initState,action)=> {switch (action.type) {case 'SET-TITLE':return {...state,title: action.payload}default:return state;}
}

在目录的index.js配置prover和store

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import * as serviceWorker from './serviceWorker';
import { Privider } from 'react-redux';
import {createStore} from 'redux';
import { combineReducers } from 'redux';
import headerReducer from './routes/header/reducer';
import sideReducer from './routes/side/reducer';const reducers = combineReducers({header: headerReducer,side: sideReducer
})
// 创建store
const store = createStore(reducers);ReactDOM.render(
<Provider store={store}><App />
</Provider>,document.getElementById('root'));serviceWorker.unregister();

把side下面的index.js改造成容器组件

/*** Side容器组件*/
import React from 'react';
import View from './View'
import { connect } from 'react-redux';
import { showSideAction } from './reducer';
import { bindActionCreators } from 'redux';class Side extends React.Component {render() {return <View {...this.props}/>}
}function mapStateToProps(state) {return {show: state.side.show}
}
function mapDispatchToProps(dispatch) {return {showSide: bindActionCreators(showSideAction,dispatch)}
}export default connect(mapStateToProps,mapDispatchToProps
)(Side);

修改side下的View.js,它的显示和隐藏使用state里的show来控制

/*** Side UI组件*/
import React from 'react';
import './View.css'class View extends React.Component {render() {let { show,showSide } = this.props;if (show) {return (<div onClick={()=>{showSide(false)}}><ul className="list"><li className="item">首页</li><li className="item">影片</li><li className="item">影院</li><li className="item">E座卡</li></ul></div>)} else {return '';}}
}export default View;

修改header容器组件和UI组件

/*** header容器组件*/
import React from 'react';
import View from './View';
import { connect } from 'react-redux';
import { showSideAction } from '../side/reducer';
import { bindActionCreators } from 'redux';class Header extends React.Component {render(){return <View {...this.props}/>}
}function mapStateToProps(state) {return {title: state.header.title,show: state.side.show}
}function mapDispatchToProps(dispatch) {return {showSide: bindActionCreators(showSideAction, dispatch)}
}export default connect(mapStateToProps,mapDispatchToProps
)(Header);
/*** headerUi组件*/
import React from 'react';class View extends React.Component {render() {let { title,showSide,show } = this.props;return (<divstyle={{ height: '50px', display: 'flex', alignItems: 'center', background: 'green' }}><button onClick={()=>{showSide(!show)}}>{show?'隐藏':'显示'}菜单</button><span style={{color:'#fff',marginLeft:'15px'}}>{title}</span></div>);}
}export default View;

此demo地址: https://gitee.com/huruqing/redux-example

手把手教你做一个react-redux-demo相关推荐

  1. 手把手教你做一个物联网视频监控项目(三)流媒体方案实现

    往期文章 手把手教你做一个物联网视频监控项目(一) 介绍 手把手教你做一个物联网视频监控项目(二)MJPG-streamer方案实现 文章目录 前言 一.软硬件准备 二.流媒体方案的实现之FFmpeg ...

  2. python手机版做小游戏代码大全-Python大牛手把手教你做一个小游戏,萌新福利!...

    原标题:Python大牛手把手教你做一个小游戏,萌新福利! 引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规 ...

  3. 手把手教你做一个自己的chrome扩展程序

    手把手教你做一个自己的chrome扩展程序 [目录] first.效果 1.收藏夹修改 (1).鼠标移动到收藏夹上的动作效果 (2).收藏夹框 (3)百度搜索框功能 2.右上文字修改 3.背景图片修改 ...

  4. 手把手教你做一个Java贪吃蛇小游戏

    大家好,我是孙不坚1208,这篇博客给大家分享一下:如何做一个贪吃蛇小游戏(Java版)的exe应用程序,希望能给需要帮助的朋友带来方便. 手把手教你做一个Java贪吃蛇小游戏的exe应用程序 一.J ...

  5. Blender图解教程:手把手教你做一个马里奥金币 之 图片转法线贴图法(附模型下载)

    <Blender图解教程:手把手教你做一个马里奥金币 之 比较传统的方法>介绍了一种用Blender制作法线贴图的流程,本文介绍一种更加省事的方法. 步骤 效果图 概要 步骤 1. 建模 ...

  6. 我的第一个 react redux demo

    最近学习react redux,先前看过了几本书和一些博客之类的,感觉还不错,比如<深入浅出react和redux>,<React全栈++Redux+Flux+webpack+Bab ...

  7. react项目_保证一看就会 | 手把手教你创建一个React项目

    一.如何使用 git 在 GitHub 上创建一个项目 新建一个项目 首先,在github上注册自己的账号,然后登录后,可以看到如下界面,是你的主页.点击右边的➕号,选择第一个选项 填写项目信息 此时 ...

  8. 手把手教你做一个jsp servlet mysql实现的学生签到考勤请假管理系统附带视频开发教程和完整源码

    今天给大家演示的是一款由jsp+servlet+my色口数据库实现的学生请假签到考勤管理系统,采用了MVC的设计模式,结构层次非常清晰,此外系统还有完整的开发教程. 下面我们先来看看文档结构: 下面来 ...

  9. R数据分析:跟随top期刊手把手教你做一个临床预测模型

    临床预测模型也是大家比较感兴趣的,今天就带着大家看一篇临床预测模型的文章,并且用一个例子给大家过一遍做法. 这篇文章来自护理领域顶级期刊的文章,文章名在下面 Ballesta-Castillejos ...

  10. 手把手教你做一个非常酷的PoV显示器(附源码)

    关注+星标公众号,不错过精彩内容 来源 | DF创客社区 作者 | Amal Shajan 今天为大家分享一个DIY产品,如下: 前两天天我在浏览购物网站的时候,被一个购物清单吸引住了, 5个ATti ...

最新文章

  1. 清华 词向量库_word2vec 构建中文词向量
  2. JavaBean简单及使用
  3. 对多个button触发enter操作,执行不同的操作
  4. 解决问题:HTTP 错误 401.1 - 未授权:登录失败【转】
  5. 《事实:用数据思考,避免情绪化决策》笔记
  6. 万恶的C++ 【1】:类型及运算
  7. asp.net缓存-SqlCacheDependency
  8. Java反射机制的缺点
  9. beautifulsoup 基本语法
  10. 突破限制轻松下载网盘的文件,免登陆使用,速度也不错!
  11. 冰刃IceSword中文版 V1.22 绿色汉化修正版
  12. win10无法访问linux共享服务器,Win10无法访问NAS或Linux网络共享的处理方法
  13. 实时数据库简介和比较---PI
  14. C++产生随机数函数rand()
  15. 【文献阅读4】Position-Based User-Centric Radio Resource Management in 5G UDN for URLLC Vehicular Commu
  16. android手机 恢复微信图片,微信图片过期了怎么恢复?记住这个操作,找回更清晰!...
  17. 大麦网信息泄露致用户被骗 承认存在技术漏洞
  18. 龙格现象 matlab,拉格朗日插值龙格现象的matlab实现
  19. 记录M1Mac基础的Command快捷键
  20. LeetCode Nim游戏 题解

热门文章

  1. git config设置用户名_hexo和git搭建博客过程
  2. 冷却水的循环方式有哪几种_一种清洁环保高效的方法处理工业循环冷却水
  3. 计算机专业技能知识,2017年度计算机专业技能知识资料基础知识资料试题'及其答案...
  4. 安卓能不能安装jar_Sentaurus TCAD安装之jedit+TCAD宏包
  5. python环境_python环境搭建教程
  6. win10组件服务计算机是红色的,KB4023057:Windows 10更新服务组件的更新
  7. python requests_小白学 Python 爬虫(18):Requests 进阶操作
  8. 数据库配置,参考django框架,采用嵌套的字典实现
  9. “一带一路”谋定沿边开放发展-刘虹飞:经信研究形成共识
  10. bzoj5183 [Baltic2016]Park