react-redux

index.js

import React from 'react';
import ReactDom from 'react-dom';
import {createStore, applyMiddleware,compose} from 'redux';
import thunk from 'redux-thunk'
import {Provider} from 'react-redux';
import App from './App';
import {counter} from './index.redux';

//用來配置調(diào)試redux工具用
const reduxDevtools = window.devToolsExtension?window.devToolsExtension():f=>f;
//處理中間件applyMiddleware,組合函數(shù)用的compose
const store =  createStore(counter,compose(applyMiddleware(thunk),reduxDevtools));

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

index.redux.js


const ADD_GUN = '加機關(guān)槍';
const REMOVE_GUN = '減機關(guān)槍';


//reducer
export function counter(state=0,action){
    switch(action.type){
        case ADD_GUN:
            return state+1
        case REMOVE_GUN:
            return state-1
        default:
            return 10        
    }
}

//action creator
export function addGun(){
    return {type:ADD_GUN}
}
export function removeGun(){
    return {type:REMOVE_GUN}
}
export function addGunAsync(){
    return dispatch=>{
        setTimeout(()=>{
            dispatch((addGun()))
        },2000)
    }
}

App.js


import React from "react";
import { Button } from 'antd-mobile';
import { connect } from "react-redux";
import {addGun,removeGun,addGunAsync} from "./index.redux";


class App extends React.Component{
    render(){
        return (
            <div>
                <h1>現(xiàn)在有{this.props.num}</h1>
                <Button onClick={this.props.addGun}>加一把</Button>
                <Button onClick={this.props.removeGun}>減一把</Button>
                <Button onClick={this.props.addGunAsync}>異步加一把</Button>
            </div>
        )
    }
}
const mapStatetoProps=(state)=>{
    return {num:state}
}
const actionCreators={addGun,removeGun,addGunAsync}
App = connect(mapStatetoProps,actionCreators)(App)
export default App;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容