第三十六章 状态管理工具与总结

news/2024/11/22 8:21:31/

Redux 是一个渐进式的状态管理库,它不仅仅是一个库,同时也是一个框架。它提供了一组用于构建复杂应用程序的工具和库,其中包括一些浏览器插件。 在 ChromeFirefox 浏览器上,已经存在一些 Redux 的浏览器插件,例如 Redux DevTools,它可以帮助开发者在开发 Redux 应用程序时更加高效地管理和调试状态。

使用Redux DevTools开发者工具

  • 1、在浏览器安装该插件

在浏览器的应用商店直接搜索redux关键字,在结果列表就会出现Redux DevTools插件,我们点击添加即可。

在这里插入图片描述

  • 2、还需要在项目安装第三方依赖,并修改部分代码

如果只是在浏览器安装了该插件,我们启动项目,并不能向react/vue开发者工具一样直接使用。还要依赖第三方包才能使用。

(1). 安装npm

npm i redux-devtools-extension

(2). 修改文件store.js的代码

// 引入createStore,专门用于创建redux中最为核心的store对象
import { createStore , applyMiddleware, combineReducers } from 'redux'
import countReducer from './reducers/count'
import personReducer from './reducers/person'
// 引入redux-thunk,用于支持异步action
import thunk from 'redux-thunk'
import {composeWithDevTools} from 'redux-devtools-extension'const allReducer = combineReducers({sum: countReducer,peoples: personReducer
})
export default createStore(allReducer,composeWithDevTools(applyMiddleware(thunk)))

这里我们需要引入composeWithDevTools这个API,它能在浏览器中启用 Redux DevTools 插件,从而提高开发效率和体验

(3). 运行看效果

在这里插入图片描述

至此,我们就可以正常使用Redux DevTools开发者工具了。


改良一下项目

  • 将多个reducer单独封装引入

由于在项目中可能会存在多个reducer,如果一个一个在store文件中引入,会导致其代码复杂,结构不清晰,不利于我们维护。所以我需要新建一个reducers/index.js来帮我们管理所有的reducers

import { combineReducers } from 'redux'
import count from './count'
import person from './person'export default combineReducers({sum: count,peoples: person
})

在将整合好的reducers导入store中:

// 引入createStore,专门用于创建redux中最为核心的store对象
import { createStore , applyMiddleware } from 'redux'
// 引入整合后的reducers
import allReducer from './reducers'
// 引入redux-thunk,用于支持异步action
import thunk from 'redux-thunk'
// 用于开启浏览器插件redux-devtools
import {composeWithDevTools} from 'redux-devtools-extension'export default createStore(allReducer,composeWithDevTools(applyMiddleware(thunk)))
  • 修改变量命名

之前我们在action里面的函数命名是为了学习,所以命名很长,真正开发的时候变量名称,我们尽量语义化和简洁化。如:

import { ADD_PERSON } from '../constant'
// 添加人信息的action
export const addPerson = personObj => ({type: ADD_PERSON, data:personObj})

以前的变量名称是:createAddPersonAction现在我们直接叫:addPerson简单明了。其他文件的命名规范亦是如此,这里不在赘述。


总结

最后我们这里做一个简要的总结:

  • Redux库本身是一个纯JavaScript库,它提供了一组API,用于管理应用程序的状态和数据流。它还提供了一组钩子函数,用于帮助开发人员更好地处理应用程序状态。
  • React-Redux库则是一个react库,它使用Redux库来管理应用程序中的状态和数据流。它使用React组件来构建应用程序,并将Redux库集成到组件中。这样可以使开发人员可以使用React组件来管理应用程序中的状态和数据流。
  • 我们可以使用reduxreact-redux实现多个组件的数据共享。

http://www.ppmy.cn/news/82999.html

相关文章

【Vue2.0源码学习】虚拟DOM篇-Vue中的DOM-Diff

文章目录 1. 前言2. patch3. 创建节点4. 删除节点5. 更新节点6. 总结 1. 前言 在上一篇文章介绍VNode的时候我们说了,VNode最大的用途就是在数据变化前后生成真实DOM对应的虚拟DOM节点,然后就可以对比新旧两份VNode,找出差异所在&#xff0c…

架构整洁之道上篇(编程范式设计原则)

目录 1.概述 2.编程范式 2.1.结构化编程 2.2.面向对象编程 2.3.函数式编程 3.设计原则 3.1.单一职责原则 3.2.开闭原则 3.3.里氏替换原则 3.4.接口隔离原则 3.5.依赖反转原则 4.小结 1.概述 软件架构的终极目标是,用最小的人力成本来满足构建和维护该系…

SEO优化需要天天更新文章吗?

SEO优化并不要求每天都更新文章。 更新频率取决于你网站的内容类型、目标受众和业务需求。以下是一些建议: 高质量内容:关键是提供有价值且吸引人的内容。不要为了更新而随意发布低质量或重复的内容。确保你的文章有深度、独特性和相关性,以…

关于K8S库中高可用的锁机制详解

简介 对于无状态的组件来说,天然具备高可用特性,无非就是多开几个副本而已;而对于有状态组件来说,实现高可用则要麻烦很多,一般来说通过选主来达到同一时刻只能有一个组件在处理业务逻辑。 在Kubernetes中,…

0基础学习VR全景平台篇第27章:场景管理-视角功能

大家好,欢迎收看蛙色平台免费教程! 功能位置示意 一、本功能将用在哪里? 视角功能:指观看者打开场景时,默认展示的位置内容,可针对视角显示范围、视角远近范围进行设置。 应用场景:几乎每个作品…

爬虫的工作程序

爬虫是一种自动化程序,用于从互联网上收集数据。它可以自动访问网站,提取有用的信息,并将其存储在本地计算机上。在本文中,我们将介绍爬虫的工作程序,包括爬虫的基本原理、爬虫的工作流程、爬虫的应用场景以及爬虫的优…

扩散能垒计算在电池材料领域的革新应用

扩散能垒计算在电池材料领域的革新应用 随着能源需求的增长和环境意识的提高,电池技术成为解决可再生能源存储和移动电子设备需求的关键。电池材料的研究和开发变得日益重要,而扩散能垒计算作为一种先进的计算方法,为电池材料领域带来了革新的…

Hive的用户自定义函数实现步骤与流程

面试题来源: 《大数据面试题 V4.0》 大数据面试题V3.0,523道题,679页,46w字 参考答案: 1、如何构建UDF? 用户创建的UDF使用过程如下: 第一步:继承UDF或者UDAF或者UDTF&#xf…