redux之connect和provider的简单使用(加上中间件)

首先是src目录结构:

store目录下:

action.js

export const add=()=>({type:'add',data:1});
export const down=()=>({type:'down',data:1});

reducer.js

function reducer(state=0,action){
    switch(action.type){
        case 'add':
            return state+action.data
        case 'down':
            return state-action.data
            default:
        return state
    }
}
export default reducer;

index.js

import reducer from './reducer.js'
import { applyMiddleware, createStore} from 'redux';



var logger = store => next => action => {//中间件
    console.log(next)
    console.log('[action]', action)
    console.log(`[action] type:${action.type} data:${JSON.stringify(action.data)}`)
    next(action)
  
  }


  const store = createStore(
    reducer,
    applyMiddleware(logger)
  )




export default store;

App.js

class App extends Component{
  add=()=>{
    this.props.add()
  }
  down=()=>{
    this.props.down()
  }
  render(){
    
    return (
      <div>
  <div>{this.props.count}</div>
  <button onClick={this.add}>+</button>
  <button onClick={this.down}>-</button>
      </div>
    )
  }
}

export default connect(state=>{
  
  return {count:state}
},{add,down})(App);

index.js

import React from 'react';
import ReactDOM from 'react-dom';

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

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

render();
store.subscribe(render)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值