redux实战

1:action跟reducers是在组建中通过装饰器连接起来的;在这个之前二者没有任何联系;

这里写图片描述

第一部分:action——session.js

import * as Types from '../action-types'
import { toReg } from '../../api/home'


let actions={
    regiserFun(){
        // redux-thunk
        return function (dispatch,getState) {
            //redux-promise的用法:可以将payload中的promise执行,执行后将内容放到action.payload中进行派发:{ type:SET_SLIDERS, patload:[{},{},{},{}] }
            dispatch({type:Types.SET_SLIDERS ,payload:toReg().then(function (response) {
                    // 转换为 JSON
                    // console.log("response")
                    // console.log(response)
                    if(response.status===200){
                        return response.json();
                    }else{
                        alert('服务器挂掉了')
                    }
                }).then(function (j) {
                    // console.log('获取到的数据是====');
                    // console.log(j);
                    return j
                })})
        }
    }

}
export default  actions

第二部分:redux

1:根部的index.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import registerServiceWorker from './registerServiceWorker';
//配置路由组件
import {HashRouter as Router,Route, Switch} from 'react-router-dom'
import Home from './containers/Home/Home'
import Profile from './containers/Profile/Profile'
import Lesson from './containers/Lesson/Lesson'
import Detail from './containers/Detail/Detail'
import Register from './containers/Register/Register'
import Login from './containers/Login/Login'

import {Provider} from 'react-redux'
import store from './store/index'

import './common/reset.css'

ReactDOM.render(
    <Provider store={store}>
        <Router>
            <App>
                <Switch>
                    <Route path='/' exact={true} component={Home}></Route>
                    <Route path='/lesson' component={Lesson}></Route>
                    <Route path={'/profile'} component={Profile}></Route>
                    <Route path={'/detail/:lessonid'} component={Detail}></Route>
                    <Route path={'/register'} component={Register}></Route>
                    <Route path={'/login'} component={Login}></Route>
                </Switch>
            </App>
        </Router>
    </Provider>
    , document.getElementById('root'));
registerServiceWorker();

2:store———-index.js

import { createStore , applyMiddleware } from 'redux'
import reduxLogger from 'redux-logger'
import reduxThunk from 'redux-thunk'
import reduxPromise from 'redux-promise'
import reducer from './reducers/index'


let store= createStore(reducer,applyMiddleware(reduxLogger,reduxThunk,reduxPromise))
window._store=store; //为了测试用
export default store

3:reducers——index.js

import { combineReducers } from 'redux'
import home from './home'
import session from './session'
export default  combineReducers({
    home,
    session
})

4:reducers——session.js

//一个页面一个reducer
import * as Types from '../action-types'
let initState={
    user:null,
    msg:'',
    success:'',
    err:0,

}
function session(state=initState, action) {
    switch (action.type){
        case Types.SET_USER_INFO:
            return {
                ...state,
                initState:action.payload
            }

        default:{
            return state
        }


    }
}
export default session

第三部分:action+redux在组建中融合

import React, {Component} from 'react'
import {connect} from 'react-redux'
import actions from '../../store/actions/session'
//加上装饰器以后才会有redux中的状态值;否则没有
@connect(state => ({...state.session}), actions)
export default class Register extends Component {
    componentWillMount(){
        console.log('this.props')
        console.log(this.props)
    }


    render() {
        return (
            <div>
                999
            </div>
        )
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值