react-redux使用

需求:单击按钮实现数字的加减
在这里插入图片描述

App.jsx

import React, { Component } from 'react'
import { Button } from 'antd';
import {connect} from 'react-redux'
import * as counterActions from './reduxDemo/actions/counter.js'
import {bindActionCreators} from 'redux'

class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      name: 'zhangsan',
      count: 0
    }
  }
  render() {
    console.log(this.props)
    return (

      <div className="App">
        <Button type="primary" onClick={()=> this.props.counterActions.increment(10)}>Increment</Button>
        <Button onClick={()=> this.props.counterActions.drecrement(5)}>Drecrement</Button>
      <h1>{this.props.counter}</h1>
      </div>

    );
  }
}

const mapStateToProps=(state)=>{
  return{
    counter:state
  }
}
const mapStateToDispatch=(dispatch)=>{
  return{
    counterActions:bindActionCreators(counterActions,dispatch)
  }
}
export default connect(mapStateToProps,mapStateToDispatch)(App)

index.js

import React from 'react';
import App from './App.jsx';
import { createStore } from 'redux'
import reducer from './reduxDemo/reducers/counter.js'
import {Provider} from 'react-redux'

const store = createStore(reducer);//创建store仓库

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

reduxDemo/constants/index.js

export const INCREMENT = 'INCREMENT';
export const DRECREMENT = 'DRECREMENT';

reduxDemo/reducers/counter.js

import * as actions from '../constants/index'
const counter = (state=0,action)=>{
    switch(action.type){
        case actions.INCREMENT:
            return state+action.num;
        case actions.DRECREMENT:
            return state-action.num;
        default:
            return state
    }
}
export default counter;

reduxDemo/actions/index.js

import * as actions from '../constants/index'
export function increment(num){
    return{
        type:actions.INCREMENT,
        num
    }
}
export function drecrement(num){
    return{
        type:actions.DRECREMENT,
        num
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值