在react项目实战中使用Redux(案例讲解)

简介: 上篇文章讲解了redux的基本使用方法,这篇文章通过小案例教大家如何在实际的react的项目中实现redux,加深对redux的理解和掌握,基础内容不清楚的可以看看上篇文章

前言

上篇文章讲解了redux的基本使用方法,这篇文章通过小案例教大家如何在实际的react的项目中实现redux,加深对redux的理解和掌握,基础内容不清楚的可以看看上篇文章——》 Redux的基础用法详解(纯函数的概念)

项目中使用Redux

这里就新建项目然后使用redux完成一个小案例
首先新建项目然后删除掉冗余代码,之后在src文件夹下新建一个pages文件夹,在文件夹下新建一个alipay.js和wxpay.js,然后我们来实现一个这样的需求:

比如我们的微信和支付宝都绑定了同一张银行卡,当我们去使用支付宝或者微信支付的时候,对应的这个银行卡上的余额就会减少。也就是说支付宝和微信共享了银行卡的账户余额。

项目中要用到Redux,所以要先进行下载

npm i -D redux

在src目录下新建store文件夹,去写对应的内容

我们来捋一捋实现这个功能的思路,在微信和支付宝端余额显示相同。思路是建立一个文件夹叫store,index.js中是我们用来创建store的,然后建立一个action来放咱们的一些action,我们通过action来修改store,连接action和store的是我们的reducer 西,reducer是一个纯函数,

下面我们根据上篇文章的步骤来创建和使用store
store/index.js :

import { createStore } from 'redux'
import reducer from './reducer'

const store = createStore(reducer)

export default store

新建canstance.js文件,在里面定义对应的方法:

export const INCREMENT = 'INCREMENT'
export const DECREMENT = 'DECREMENT'
export const ADD_NUMBER = 'ADD_NUMBER'
export const SUB_NUMBER = 'SUB_NUMBER'

然后创建action的内容,新建action文件:

import { INCREMENT, DECREMENT, ADD_NUMBER, SUB_NUMBER } from './canstance'

export const incAction = num =>({ type: INCREMENT, num })
export const decAction = num =>({ type: DECREMENT, num })
export const addAction = num =>({ type: ADD_NUMBER, num })
export const subAction = num =>({ type: SUB_NUMBER, num })

最后新建reducer文件,建立store和action之间的联系:

import { INCREMENT, DECREMENT, ADD_NUMBER, SUB_NUMBER } from './canstance'

const initState = {
    money: 0
}

const reducer = (state=initState, action) => {
    switch(action.type) {
        case INCREMENT:
            return {...state, money: state.money + 1}
        case DECREMENT:
            return {...state, money: state.money - 1}
        case ADD_NUMBER:
            return {...state, money: state.money + action.num}
        case SUB_NUMBER:
            return {...state, money: state.money - action.num}
        default: 
        return state
    }
}

export default reducer

最后来到开始创建的alipay.js和wxpay.js,这两个文件里面的内容大致相同,下面就举例说明一个
1.引入store.js
2.定义state状态,利用store.getState().money进行取值
3.在componentDidMount中进行值的更新

import React, { PureComponent } from 'react'
import store from '../store'
import { addAction, subAction } from '../store/action'

export class Alipay extends PureComponent {
  state = {
    money: store.getState().money
  }

  componentDidMount() {
    store.subscribe(() => {
      this.setState({money: store.getState().money})
    })
  }

  render() {
    return (
      <div>
        <h1>支付宝</h1>
        <h2>余额:{this.state.money}</h2>
        <button onClick={e => this.decrement(1)}>付钱</button>
        <button onClick={e => this.makemoney(100)}>收钱</button>
      </div>
    )
  }
  decrement(num) {
    store.dispatch(subAction(num))
  }
  makemoney(num) {
    store.dispatch(addAction(num))
  }
}

export default Alipay

查看最后实现的效果:
在这里插入图片描述

最后

好了本篇文章就到此结束了,在上一篇的基础上通过小例子讲解了在react项目中使用Redux的方法,如果有问题可以在评论区互相交流讨论呀~

相关文章
|
2月前
|
存储 JavaScript 前端开发
掌握现代Web开发的基石:深入理解React与Redux
【10月更文挑战第14天】掌握现代Web开发的基石:深入理解React与Redux
35 0
|
27天前
|
前端开发 JavaScript 开发者
使用React和Redux构建高效的前端应用
使用React和Redux构建高效的前端应用
32 1
|
2月前
|
存储 JavaScript 前端开发
React中使用redux
【10月更文挑战第15天】
32 3
|
2月前
|
存储 JavaScript 前端开发
如何使用React和Redux构建现代化Web应用程序
【10月更文挑战第4天】如何使用React和Redux构建现代化Web应用程序
|
2月前
|
JavaScript 前端开发
使用 React 和 Redux 构建动态图表应用
【10月更文挑战第3天】使用 React 和 Redux 构建动态图表应用
|
2月前
|
JavaScript 前端开发
使用 React 和 Redux 构建一个计数器应用
【10月更文挑战第3天】使用 React 和 Redux 构建一个计数器应用
|
2月前
|
存储 JavaScript 前端开发
|
2月前
|
前端开发 JavaScript 网络架构
实现动态路由与状态管理的SPA——使用React Router与Redux
【10月更文挑战第1天】实现动态路由与状态管理的SPA——使用React Router与Redux
44 1
|
3月前
|
前端开发
React技术栈-react使用的Ajax请求库实战案例
这篇文章介绍了在React应用中使用Axios和Fetch库进行Ajax请求的实战案例,展示了如何通过这些库发送GET和POST请求,并处理响应和错误。
61 10
React技术栈-react使用的Ajax请求库实战案例
|
3月前
|
前端开发
React技术栈-react使用的Ajax请求库用户搜索案例
这篇文章展示了一个React技术栈中使用Ajax请求库(如axios)进行用户搜索的实战案例,包括React组件的结构、状态管理以及如何通过Ajax请求获取并展示GitHub用户数据。
37 7
React技术栈-react使用的Ajax请求库用户搜索案例