美文网首页react环境
9.更好的使用redux

9.更好的使用redux

作者: 大月山 | 来源:发表于2017-11-01 13:49 被阅读53次

redux-freeze运行时报错机制

redux-thunkredux的异步中间件

redux-logger日志中间件

redux-immutable在不可变数据类型中合并reducer

redux-create-reducer使用action和reducer的关联变的简单

关于redux中间件的讲解

安装依赖插件

npm i --save redux-immutable redux-freeze redux-thunk redux-logger immutable redux-create-reducer
修改/app/store/store.js
import {createStore, applyMiddleware, compose} from 'redux';
import {combineReducers} from 'redux-immutable';
import freeze from "redux-freeze"
import thunk from 'redux-thunk'
import logger from 'redux-logger'
import {Map} from 'immutable';
import reducers from './reducers';

let middlewares = [];
middlewares.push(thunk);
middlewares.push(logger);
middlewares.push(freeze);

//添加中间件
let middleware = applyMiddleware(...middlewares);
//添加redux dev tools,可以在谷歌商城里直接安装工具,搜索名字
middleware = compose(middleware, window.devToolsExtension());

const reducer = combineReducers(reducers);

const store = createStore(
    reducer,
    Map({}),
    middleware
);

export default store;
新建/app/store/reducers.js
import user from '../component/content/content01.reducer';
export default {
    user
}
修改/app/component/content/content01.reducer.js
import {createReducer} from 'redux-create-reducer';
import {fromJS} from 'immutable';

import {
    ADD_ONE_USER
} from './content01.actions';

const initState = fromJS({
    data: [{
        name: 'doudou',
        age: 32,
        phone: 123456789,
        email: '123456789@163.com',
        key: 1,
    }]
});

const handlers = {
    [ADD_ONE_USER]: (user, action) => {
        return user.set('data', user.get('data').push(fromJS(action.payload)));
    }
};

export default createReducer(initState, handlers);
修改/app/component/content/content01.action.js
export const ADD_ONE_USER = 'ADD_ONE_USER';

export function addOneUser(value) {
    return dispatch => {
        return dispatch({
            type: 'ADD_ONE_USER',
            payload: value
        })
    }
}
修改/app/component/content/content01.js
const mapStateToProps = (state) => {
    return {
        data: state.get('user').get('data'),
    }
};

const mapActionCreators = {
    addOneUser
};

export default connect(mapStateToProps, mapActionCreators)(Content01);

相关文章

  • 9.更好的使用redux

    redux-freeze运行时报错机制 redux-thunkredux的异步中间件 redux-logger日志...

  • redux源码分析

    这篇文章会很长。redux源码读起来并不困难。读懂redux的源码有利于更好的使用redux。但是react-re...

  • React-Redux 使用

    目前使用版本 建议先了解 Redux 的使用!Redux使用(纯Redux使用) React-Redux 是 Re...

  • Day17. Redux深入

    如何使用redux-thunk 中间件的使用, redux-thunk redux-devtools redux开...

  • redux-actions学习笔记

    介绍 redux-actions的产生,是为了简化redux的使用。 Redux传统用法 在使用redux-act...

  • react-redux

    使用react-redux,可以更方便的使用redux开发 先install react-redux使用react...

  • 一个完整小巧的Redux全家桶项目

    OneArticle: 使用React-Native开发,使用Redux,React-Redux,Redux-Pe...

  • redux

    单独使用redux redux是核心库 与react配合使用redux 安装react-redux react-r...

  • redux 及 react-redux 的基本使用

    本文介绍 redux 的基本使用,介绍 redux 的流程。以及 react-redux 的基本使用 一、redu...

  • 如何快速理解使用redux

    使用redux的主要流程 首先 引入 redux 使用redux中的createStore去创建一个store 在...

网友评论

    本文标题:9.更好的使用redux

    本文链接:https://www.haomeiwen.com/subject/agzwpxtx.html