React中使用Redux

这篇具有很好参考价值的文章主要介绍了React中使用Redux。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.为什么要使用redux

        redux是一个专门用于状态管理的一个库,和vue中的vuex功能类似。其中核心点就是状态的管理。虽然我们无论在vue还是在react中我们组件间的通行都可以使用消息总线或者父子组件间的消息传递来进行操作。但是如果我们需要A组件的状态在其他十个或者二十个组件上进行使用时。这时候如果时候上述的方法来进行就会显示很麻烦,因此我们使用redux来进行全局管理状态。

2.redux的安装和使用

        由于在react的版本中,我们不能在使用createStore来创建一个全局的store对象。因为该方法可能会在未来的某个时刻被抛离掉。因此在这里我们使用了react官网中推荐我们使用的方法。

        其官网链接如下快速开始 | Redux 中文官网

npm install @reduxjs/toolkit react-redux

3.文件目录 

        下面是redux的工作图。我们可以从中发现,无论我们需要共享的数据怎么变,其核心都是我们的组件从store中去数据,当我们的组件需要修改数据时,我们就通过action来与store来进行数据交互,而并不是直接操作数据。这一点和vuex中的dispatch action mutation类似。

React中使用Redux,react,JS,react.js,javascript,前端

 文章来源地址https://www.toymoban.com/news/detail-592421.html

        首先我们需要创建一个全局的store文件来进行全局的管理。这里Toolkit中给我们将createStore进行了封装。我们就只需要调用该方法就可以完成创建一个最简单的store的模版管理库。

import { configureStore } from '@reduxjs/toolkit'

export default configureStore({
  reducer: {}
})

        其次我们就只需要将对应状态的文件来进行对应的创建即可。这里我们就只是创建了一个count文件。  

        Redux 要求我们通过创建数据副本和更新数据副本,来实现不可变地写入所有状态更新。不过 Redux Toolkit createSlice 和 createReducer 在内部使用 Immer 允许我们编写“可变”的更新逻辑,变成正确的不可变更新。因此在这里我们可以通过使用提供的API来进行对应的仓库数据的创建。这里直接借用了官方文档中的样例,我们其实细心的可以发现,使用了这个的API创建的文件和我们vuex中的文件是不是很类似。都是拥有了类似的属性。

import { createSlice } from '@reduxjs/toolkit'

export const counterSlice = createSlice({
  name: 'counter',
  initialState: {
    value: 0
  },
  reducers: {
    increment: state => {
      // Redux Toolkit 允许我们在 reducers 写 "可变" 逻辑。它
      // 并不是真正的改变状态值,因为它使用了 Immer 库
      // 可以检测到“草稿状态“ 的变化并且基于这些变化生产全新的
      // 不可变的状态
      state.value += 1
    },
    decrement: state => {
      state.value -= 1
    },
    incrementByAmount: (state, action) => {
      state.value += action.payload
    }
  }
})
// 每个 case reducer 函数会生成对应的 Action creators
// 这里为什么要这么暴露。因为我们所创建的reducers其实是和actions中挂钩的。这里之所以采取这样暴露的形式是因为我们在修改数组的时候采取的dispatch的形式。因此我们需要在dispatch中添加我们需要调用的方法。
export const { increment, decrement, incrementByAmount } = counterSlice.actions

export default counterSlice.reducer

        然后我们就只需要在需要的页面中进行引用即可。下面是测试的相关代码。

// 这里我们声明一个store来协助我们操作redux

const store = configureStore({

//其中的reducer是用来存放各个模块间的存函数的

reducer:{

count:countCreateSlice,

},

})

export default store

 

// 这边就类似于创建对应的分片,将符合要求的分片对应创建纯函数

import {createSlice} from '@reduxjs/toolkit'

const countSlice = createSlice({

name:'counter',

initialState:{

count:0,

},

reducers:{

incremented: state => {

console.log(state.count)

// Redux Toolkit 允许在 reducers 中编写 "mutating" 逻辑。

// 它实际上并没有改变 state,因为使用的是 Immer 库,检测到“草稿 state”的变化并产生一个全新的

// 基于这些更改的不可变的 state。

state.count += 1

},

decremented: state => {

state.count -= 1

}

}

})


 

export const { incremented, decremented } = countSlice.actions

export default countSlice.reducer

import { useSelector, useDispatch } from 'react-redux'

 //这里的count就是我们在store中reducer中的key值

const count = useSelector(state => state.count.count)

function addOne(params) {

dispatch(decremented())

}

4.总结

        其实上述的用法知识redux中最简单的使用技巧。因为react比较式mvm模型,不像vue那是数据已修改页面就自动修改。 上述的redux的使用也是最简单的时候。后续我们可以将redux与UI中的模型库进行链接。

 

 

到了这里,关于React中使用Redux的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【前端】React快速入门+Redux状态管理

    本文旨在记录react的基础内容,帮助有需要的同学快速上手,需要进一步了解描述更加稳妥和全面的信息,请查阅官方文档 官方文档点击这里进行跳转 react框架 vue,react,angular这几种主流前端框架使用频率较高…本质还是js库。 React.js是一个用于构建用户界面的JavaScript库。它由

    2024年02月12日
    浏览(35)
  • JavaScript框架 Angular、React、Vue.js 的全栈解决方案比较

    在 Web 开发领域,JavaScript 提供大量技术栈可供选择。其中最典型的三套组合,分别是 MERN、MEAN 和 MEVN。前端框架(React、Angular 和 Vue)进行简化比较。 MERN 技术栈包含四大具体组件: MongoDB:一款强大的 NoSQL 数据库,以灵活的 JSON 格式存储数据。 Express.js:一套极简但强大的

    2024年02月03日
    浏览(45)
  • React.js前端 + Spring Boot后端员工管理

    该项目是一个员工管理系统,前端使用 React.js 构建,后端使用 Spring Boot 和 Data JPA 和 Lombok 构建。它提供了有效管理员工信息的全面解决方案。 特征 响应式设计:响应式 UI 设计,确保跨各种设备的可用性。 数据验证:验证用户输入以确保数据完整性。 使用的技术 前端:R

    2024年04月28日
    浏览(41)
  • 2023年最佳JavaScript框架:React、Vue、Angular和Node.js的比较

    🎉欢迎来到Java学习路线专栏~探索2023年最佳JavaScript框架:React、Vue、Angular和Node.js的比较 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:Java学习路线 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 🍹文章作者技术和水

    2024年02月11日
    浏览(38)
  • 简介:在这篇教程中,我们将使用React.js框架创建一个简单的聊天机器人的前端界面,并利用Dialogflo

    作者:禅与计算机程序设计艺术 介绍及动机 聊天机器人(Chatbot)一直是互联网领域中的热门话题。而很多聊天机器人的功能都依赖于人工智能(AI)技术。越来越多的企业希望拥有自己的聊天机器人系统,从而提升自己的竞争力。为此,业界也出现了很多基于开源技术或云

    2024年02月06日
    浏览(42)
  • 前端js react vue怎么实现在线预览doc文档

    先说结论: 目前在纯前端层面没有很好的方案,基本都需要服务端的介入。 优点 :简单易用,无需配置 缺点 :文档需要支持外网访问,且文档会是公开可见的,所以对于一些内部敏感的文档来说,这个显然是不可行的。 需要后端介入配合 onlyoffice地址 这个也要先在服务器

    2024年02月15日
    浏览(62)
  • 【前端知识】React 基础巩固(三十一)——Redux的简介

    概念 纯函数(确定的输入一定产生确定的输出,函数在执行过程中不产生副作用): 在程序设计中,若一个函数符合以下条件,那么这个函数就被称为纯函数 此函数在相同的输入值时,需产生相同的输出 函数的输出和输入值以外的其他隐藏信息或状态无关,也和由I/O设备产

    2024年02月16日
    浏览(40)
  • Node.js npm V8 React Express的运行配合关系:构建JavaScript应用的基石

    目录 Node.js 和 V8 引擎 Node.js 和 npm LTS(Long Term Support) React Node.js的作用 Express Node.js 和 V8 引擎 Node.js 使用 Google 的 V8 JavaScript 引擎 来执行 JavaScript 代码。V8 是一个高性能的 JavaScript 和 WebAssembly 引擎,用于在 Google Chrome 浏览器和 Node.js 中运行 JavaScript。 V8 引擎的更新 通常包括

    2024年03月12日
    浏览(48)
  • React中使用Redux (二) - 通过react-redux库连接React和Redux

    react-redux库使用Redux 上一篇文章演示React中直接使用Redux的使用过程是十分繁琐的, 并且有许多重复代码 但是实际上redux官方帮助我们提供了 react-redux 的库,这个库是帮助我们完成连接redux和react的辅助工具, 可以直接在项目中使用,并且实现的逻辑会更加的严谨和高效 这篇我们

    2024年02月20日
    浏览(43)
  • React中使用Redux (一) - 在React中直接使用Redux

    开始之前需要强调一下,redux和react没有直接的关系,你完全可以在React, Angular, Ember, jQuery, or vanilla JavaScript中使用Redux 。 尽管这样说,redux依然是和React库结合的更好,因为他们是通过state函数来描述界面的状态,Redux可以发射状态的更新, 让他们作出相应; 目前redux在react中使

    2024年01月23日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包