redux react使用

来源:互联网 发布:淘宝怎么装修店铺首页 编辑:程序博客网 时间:2024/05/18 21:40

1.在src中新建redux文件夹

2.npm下载redux和react-redux库

import { createStore } from 'redux';import { Provider, connect } from 'react-redux';
使用this.props获取传人数据

render() {    const {text, onChangeText, onButtonClick} = this.props;    return (        <div>            <h1 onClick={onChangeText}> {text} </h1>            <button onClick={onButtonClick}>click me</button>        </div>    );}
3.reducer.js给action去执行的方法来修改状态

//reducerconst initialState = {    text: 'Hello'}export const reducer = (state = initialState, action) => {    switch (action.type){        case 'CHANGE_TEXT':            return{                text:state.text == 'Hello' ? 'World' : 'Hello'            }        case 'BUTTON_CLICK':            return{                text: 'Hello world'            }        default:            return initialState    }}
4.action.js关联reducer到属性

const changeTextAction = {    type: 'CHANGE_TEXT'}const buttonClickAction = {    type: 'BUTTON_CLICK'}//映射Redux state到组件的属性export const mapStateToProps = (state) => {    return {        text: state.text    }}//映射Redux actions到组件的属性export const mapDispatchToProps = (dispatch) => {    return{        onButtonClick:()=>dispatch(buttonClickAction),        onChangeTextClick:()=>dispatch(buttonClickAction),    }}
5.将reducer注入到属性,也可用在组件引入

let store = createStore(reducer);
render(    <Provider store={store}>        <Index/>    </Provider>,    document.getElementById('root'));

完整代码

reducer.js

//reducerconst initialState = {    text: 'Hello'}export const reducer = (state = initialState, action) => {    switch (action.type){        case 'CHANGE_TEXT':            return{                text:state.text == 'Hello' ? 'World' : 'Hello'            }        case 'BUTTON_CLICK':            return{                text: 'Hello world'            }        default:            return initialState    }}

action.js

const changeTextAction = {    type: 'CHANGE_TEXT'}const buttonClickAction = {    type: 'BUTTON_CLICK'}//映射Redux state到组件的属性export const mapStateToProps = (state) => {    return {        text: state.text    }}//映射Redux actions到组件的属性export const mapDispatchToProps = (dispatch) => {    return{        onButtonClick:()=>dispatch(buttonClickAction),        onChangeTextClick:()=>dispatch(buttonClickAction),    }}
index.js(入口注入)

import React,{Component} from 'react';import Header from '../components/header';import '../view/authorise.less';import { createStore } from 'redux';import { Provider, connect } from 'react-redux';import {mapStateToProps, mapDispatchToProps} from '../redux/action'class Authorise extends Component{    constructor(props){        super(props);    }    render() {        const {text, onChangeText, onButtonClick} = this.props;        return (            <div>                <h1 onClick={onChangeText}> {text} </h1>                <button onClick={onButtonClick}>click me</button>            </div>        );    }}//store//let store = createStore(reducer);//连接组件Authorise = connect(mapStateToProps, mapDispatchToProps)(Authorise);export default Authorise;
authorise.js(页面)

import React,{Component} from 'react';import Header from '../components/header';import '../view/authorise.less';import { createStore } from 'redux';import { Provider, connect } from 'react-redux';import {mapStateToProps, mapDispatchToProps} from '../redux/action'class Authorise extends Component{    constructor(props){        super(props);    }    render() {        const {text, onChangeText, onButtonClick} = this.props;        return (            <div>                <h1 onClick={onChangeText}> {text} </h1>                <button onClick={onButtonClick}>click me</button>            </div>        );    }}//store//let store = createStore(reducer);//连接组件Authorise = connect(mapStateToProps, mapDispatchToProps)(Authorise);export default Authorise;
router.js(路由类似)

/** * 路由配置 **/import React from 'react';import { Router, Route, browserHistory, hashHistory} from 'react-router';import authorise from '../view/authorise';const languageSwitch = (location, cb) => {    require.ensure([], require => {        cb(null, require('../view/languageSwitch').default)    },'languageSwitch')}const RouteConfig = (    <Router history={hashHistory}>        <Route path="/" component={authorise} />        <Route path="/languageSwitch" a="bbbb" getComponent={languageSwitch} />        <Route path="*" component={authorise} />    </Router>);export default RouteConfig;









































阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 我的脸一边大一边小怎么办 桶装水盖子吸在饮水机了怎么办? 孕37周大腿内侧被内裤磨烂怎么办 生存指南合成的时候闪退怎么办 王者荣耀队友用语音骂我怎么办? 轨道衡电子计量数据不对上怎么办 孕5个月胎儿发育慢怎么办 扎高马尾后面头发扎不上去怎么办 吃了不太新鲜的肉怎么办 军训腿疼的蹲不下去怎么办 面对对老师不尊重的学生该怎么办? 当学生犯了错老师应该怎么办? 用木棒按摩脚底感觉有疙瘩怎么办 人流后按摩造成子宫复位不好怎么办 留守儿童不去学校你该怎么办 在校读书的留守儿童自身应该怎么办 进行定向越野活动时迷路了怎么办 温十系统更新后卡死无法开机怎么办 在武术比赛中被打昏了了怎么办 孩子被欺负了怎么办怎么告诉孩子 网贷雇佣黑社会到家要钱要怎么办 穿越火线枪声和脚步声没有了怎么办 魅蓝5s快充不了怎么办 门的密码输错3次怎么办 孩子剧烈运动后咳嗽到吐怎么办 前列腺穿刺后血尿一个月了怎么办 两年体检尿潜血2+怎么办严重吗? 尿结石尿不出来堵住了怎么办 四岁宝宝一直咳嗽很厉害怎么办 老公家的事业不想做了怎么办 苹果6sp手机卡顿反应慢怎么办 工程之星x3手薄密码忘了怎么办 煮绿豆汤把绿豆炒焦了怎么办 想问别人问题又不好开口怎么办 宝宝认人晚上哭着找阿姨怎么办呀 在拼多多被商家威胁了怎么办 格来云游戏禁止改画质怎么办 京东换了手机登陆要安全验证怎么办 百度网盘登录总是需要验证码怎么办 在微信群发出视频无法撤回怎么办 百度网盘客户端说网络有风险怎么办