手把手教你做一个react-redux-demo
用create-react-app创建一个项目
- 执行
npm i create-react-app -g
- 执行
create-react-app redux-example
- 执行
cd redux-example
- 执行
npm start
浏览器出现以下界面,说明项目创建好了并成功运行
创建相关组件
- 在根目录下创建routes文件夹
- 在routes下创建header和side文件夹
- 在header和side下创建header的容器组件和ui组件,代码见https://gitee.com/huruqing/redux-example
redux相关配置
- 安装redux和react-redux
npm i redux react-redux --save-dev
- 创建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相关推荐
- 手把手教你做一个物联网视频监控项目(三)流媒体方案实现
往期文章 手把手教你做一个物联网视频监控项目(一) 介绍 手把手教你做一个物联网视频监控项目(二)MJPG-streamer方案实现 文章目录 前言 一.软硬件准备 二.流媒体方案的实现之FFmpeg ...
- python手机版做小游戏代码大全-Python大牛手把手教你做一个小游戏,萌新福利!...
原标题:Python大牛手把手教你做一个小游戏,萌新福利! 引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规 ...
- 手把手教你做一个自己的chrome扩展程序
手把手教你做一个自己的chrome扩展程序 [目录] first.效果 1.收藏夹修改 (1).鼠标移动到收藏夹上的动作效果 (2).收藏夹框 (3)百度搜索框功能 2.右上文字修改 3.背景图片修改 ...
- 手把手教你做一个Java贪吃蛇小游戏
大家好,我是孙不坚1208,这篇博客给大家分享一下:如何做一个贪吃蛇小游戏(Java版)的exe应用程序,希望能给需要帮助的朋友带来方便. 手把手教你做一个Java贪吃蛇小游戏的exe应用程序 一.J ...
- Blender图解教程:手把手教你做一个马里奥金币 之 图片转法线贴图法(附模型下载)
<Blender图解教程:手把手教你做一个马里奥金币 之 比较传统的方法>介绍了一种用Blender制作法线贴图的流程,本文介绍一种更加省事的方法. 步骤 效果图 概要 步骤 1. 建模 ...
- 我的第一个 react redux demo
最近学习react redux,先前看过了几本书和一些博客之类的,感觉还不错,比如<深入浅出react和redux>,<React全栈++Redux+Flux+webpack+Bab ...
- react项目_保证一看就会 | 手把手教你创建一个React项目
一.如何使用 git 在 GitHub 上创建一个项目 新建一个项目 首先,在github上注册自己的账号,然后登录后,可以看到如下界面,是你的主页.点击右边的➕号,选择第一个选项 填写项目信息 此时 ...
- 手把手教你做一个jsp servlet mysql实现的学生签到考勤请假管理系统附带视频开发教程和完整源码
今天给大家演示的是一款由jsp+servlet+my色口数据库实现的学生请假签到考勤管理系统,采用了MVC的设计模式,结构层次非常清晰,此外系统还有完整的开发教程. 下面我们先来看看文档结构: 下面来 ...
- R数据分析:跟随top期刊手把手教你做一个临床预测模型
临床预测模型也是大家比较感兴趣的,今天就带着大家看一篇临床预测模型的文章,并且用一个例子给大家过一遍做法. 这篇文章来自护理领域顶级期刊的文章,文章名在下面 Ballesta-Castillejos ...
- 手把手教你做一个非常酷的PoV显示器(附源码)
关注+星标公众号,不错过精彩内容 来源 | DF创客社区 作者 | Amal Shajan 今天为大家分享一个DIY产品,如下: 前两天天我在浏览购物网站的时候,被一个购物清单吸引住了, 5个ATti ...
最新文章
- 清华 词向量库_word2vec 构建中文词向量
- JavaBean简单及使用
- 对多个button触发enter操作,执行不同的操作
- 解决问题:HTTP 错误 401.1 - 未授权:登录失败【转】
- 《事实:用数据思考,避免情绪化决策》笔记
- 万恶的C++ 【1】:类型及运算
- asp.net缓存-SqlCacheDependency
- Java反射机制的缺点
- beautifulsoup 基本语法
- 突破限制轻松下载网盘的文件,免登陆使用,速度也不错!
- 冰刃IceSword中文版 V1.22 绿色汉化修正版
- win10无法访问linux共享服务器,Win10无法访问NAS或Linux网络共享的处理方法
- 实时数据库简介和比较---PI
- C++产生随机数函数rand()
- 【文献阅读4】Position-Based User-Centric Radio Resource Management in 5G UDN for URLLC Vehicular Commu
- android手机 恢复微信图片,微信图片过期了怎么恢复?记住这个操作,找回更清晰!...
- 大麦网信息泄露致用户被骗 承认存在技术漏洞
- 龙格现象 matlab,拉格朗日插值龙格现象的matlab实现
- 记录M1Mac基础的Command快捷键
- LeetCode Nim游戏 题解
热门文章
- git config设置用户名_hexo和git搭建博客过程
- 冷却水的循环方式有哪几种_一种清洁环保高效的方法处理工业循环冷却水
- 计算机专业技能知识,2017年度计算机专业技能知识资料基础知识资料试题'及其答案...
- 安卓能不能安装jar_Sentaurus TCAD安装之jedit+TCAD宏包
- python环境_python环境搭建教程
- win10组件服务计算机是红色的,KB4023057:Windows 10更新服务组件的更新
- python requests_小白学 Python 爬虫(18):Requests 进阶操作
- 数据库配置,参考django框架,采用嵌套的字典实现
- “一带一路”谋定沿边开放发展-刘虹飞:经信研究形成共识
- bzoj5183 [Baltic2016]Park