React-router4 结合React-Redux

  • 复杂redux应用,多个reducer,用combineReducers合并

  • Redirect组件跳转

  • Switch只渲染一个子组件

注意⚠️combineReducers合并数据后,取出数据时参数的选取

  • App.js之前是从counter直接获取的父组件的传过来的参数,不用选取counter

  • 但是合并后state对象变成了合并后的reducer,所以需要改变

    • 改变前@connect(state => ({num:state}),{add, minus, addAsync})

    • 改变后@connect(state => ({num:state.counter}),{add, minus, addAsync})

import React from 'react'
import { connect } from 'react-redux'
import {add, minus, addAsync} from './index.redux'


// App = connect(mapStatetoProps,acitonCreators)(App)
@connect(state => ({num:state.counter}),{add, minus, addAsync})

class App extends React.Component {
    // constructor() {
    //
    // }
    render() {
        const num = this.props.num;
        const add = this.props.add;
        const minus = this.props.minus;
        const addAsync = this.props.addAsync;
        return (
            <div>
                <h1>展示dedux数据{num}</h1>
                <button onClick={add}>➕加1</button>
                <button onClick={minus}>➖减1</button>
                <button onClick={addAsync}>➕加1(两秒以后)</button>
            </div>
        )
    }
}

export default App

整体结构

  • index.js

  • index.redux.js

  • Auth.js

  • Auth.redux.js

  • reducer.js

  • Dashboard.js

  • 为了减少to='/dashboard/',可以将其通过this.props.match来获取

  • 可以更新Dashboard.js

最后更新于

这有帮助吗?