美文网首页技术开源共享
redux、react-redux、react-thunk 基本

redux、react-redux、react-thunk 基本

作者: 佳佳的蓝朋友 | 来源:发表于2019-02-27 10:53 被阅读2次

开发脚手架: create-react-app
环境:

image

写了个demo,总共三个文件。app.js页面组件、index.js入口文件、redux.js存放reducers和store,当然action也可以抽离出来,我写在了app里,下面是代码:

index.js入口:

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import { createStore, applyMiddleware } from 'redux';
import { Provider } from 'react-redux';
import reducer from './redux';
import thunk from 'redux-thunk';
//创建store

const store = createStore(reducer, applyMiddleware(thunk));

ReactDOM.render(
    <Provider store={store}>
        <App />
    </Provider>,
    document.getElementById('root')
);

app.js组件:

import React, { Component } from 'react';
import { connect } from 'react-redux';

// 异步 ACTION  示例
const delayAdd = () => (dispatch, getState) => {
  setTimeout(() => {
    dispatch({ type: 'add' });
  }, 1000);
}

class App extends Component {
  componentDidMount() {
    console.log(this.props)
  }

  render() {
    const { add, minus, dela } = this.props;
    return (
      <div className="App">
        <h2>{this.props.person.name}的年龄为{this.props.person.age}</h2>
        <button onClick={add}>next year</button>
        <button onClick={minus}>prev year</button>
        <button onClick={dela}>delay add</button>
      </div>
    );
  }
}

//  需要渲染的state数据

function mapStateToProps(state) {
  return {
    person: state
  }
}

//  修改state的reducers
function mapDispatchToProps(dispatch) {
  return {
    add: () => dispatch({ type: 'add' }),
    minus: () => dispatch({ type: 'minus' }),
    dela: () => dispatch(delayAdd())
  }
}

export default App = connect(mapStateToProps, mapDispatchToProps)(App)

redux.js:

// store 数据
const person = {
    name: 'nick',
    age: 18
}

//这是同步action  demo
// const increase = {
//    type: 'add'
// }
// const decrease = {
//    type: 'minus'
// }

//这是reducer
const reducer = (state = person, action) => {
    switch (action.type) {
        case 'add':
        // 返回新的 state tree
            return Object.assign({}, state, state.age += 1);
        case 'minus':
            return Object.assign({}, state, state.age -= 1);
        default:
            return state;
    }
}

export default reducer

详情 见GitHub: yizeruier1

相关文章

  • redux、react-redux、react-thunk 基本

    开发脚手架: create-react-app环境: 写了个demo,总共三个文件。app.js页面组件、inde...

  • Redux简介

    Redux React-redux React-router Redux 1、基本用法: Redux中存在几个概念...

  • redux基础

    Redux react-redux React-router Redux 1、基本用法: Redux中存在几个概念...

  • redux 及 react-redux 的基本使用

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

  • redux的简单应用

    1、安装 redux和react-redux: npm i redux react-redux --save-de...

  • react-redux

    redux 全局状态管理 react-redux 优化模块 优化redux的使用过程 通过react-redux ...

  • React(五)

    React-redux(三):connect和mapStateToProps React-redux(四):map...

  • React 技术栈相关技术

    React,React-Dom,Redux,React-Redux,React-Router基本依赖就不多说了 R...

  • react-redux

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

  • react-redux

    react-redux react-redux可以使redux的state成为组件的属性,dispatch的act...

网友评论

    本文标题:redux、react-redux、react-thunk 基本

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