前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Web开发 React 学习(十九)

Web开发 React 学习(十九)

作者头像
雷子
发布2021-03-15 13:01:41
3300
发布2021-03-15 13:01:41
举报
文章被收录于专栏:雷子说测试开发

利用redux 实现加减操作

安装

代码语言:javascript
复制
npm install --save react-redux

使用。

创建一个dedux.js

代码语言:javascript
复制
const counter=(state=0,action)=>{
    switch(action.type){

        case "decr":
            return state-1

        case "incre":
            return state+1
        default :
            return state
    }
       
}
export default counter

创建一个action

代码语言:javascript
复制
export function inde(){
    return {
        type:"incre"
    }
}

export function decr(){
    return {
        type:"decr"
    }
}

在index界面引入

代码语言:javascript
复制
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
// import * as serviceWorker from './serviceWorker';
import App from './app'
import reducer from "./counter"
import  {createStore} from "redux"
import {Provider} from "react-redux"

const store1=createStore(reducer)
// store.subscribe(()=>console.log("state",store.getState()))

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

操作

代码语言:javascript
复制
import React from "react"
import {connect} from "react-redux"
// import {inde,decr} from "./action"
import * as counterActions from "./action"
import {bindActionCreators} from "redux"

import Nav from "./compoents/nav/index"
import counter from "./counter"
class App extends React.Component{
    render(){
        const {incre,decre}=this.props
        return (
            <div>
                 <Nav/>
            <div>
        <h1>{this.props.counter}</h1>
            {/* <button onClick={this.props.onIncrement}>inc</button>
            <button  onClick={this.props.ondecrcrement}>decr</button> */}
             {/* <button onClick={()=>(incre())}>inc</button>
            <button  onClick={()=>(decre())}>decr</button> */}
            <button onClick={()=>(this.props.counterActions.inde())}>inc</button>
            <button  onClick={()=>(this.props.counterActions.decr())}>decr</button>
        </div>
            </div>
    
        )
           
        }
    
} 
const mapStateToProps=(store)=>{
    return{
        counter:store
    }
}
// const mapDispatchToProps=(dispatch)=>{
//     return {
//         incre:()=>dispatch(inde()),
//         decre:()=>dispatch(decr())
//     }
// }
const   mapDispatchToProps=(dispatch)=>{
    return{
        counterActions:bindActionCreators(counterActions,dispatch)
    }
}

//先后顺序不能颠倒
export default connect(mapStateToProps,mapDispatchToProps)(App)

对于上面的通用参数,可以统一提取。

最后结果

那么我们怎样去增加或者减少自定义的 其实很简单

代码语言:javascript
复制
  <button onClick={()=>(this.props.counterActions.inde(1))}>inc</button>
            <button  onClick={()=>(this.props.counterActions.decr(2))}>decr</button>
代码语言:javascript
复制
import * as actions  from "./constore/index"
const counter=(state=0,action)=>{
    switch(action.type){

        case actions.dec:
            return state-action.num

        case actions.insert:
            return state+action.num
        default :
            return state
    }
       
}
export default counter
代码语言:javascript
复制
import * as actions  from "./constore/index"
export function inde(num){
    return {
        type:actions.insert,
        num
    }
}

export function decr(num){
    return {
        type:actions.dec,
        num
    }
}

这样调整后就实现了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档