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

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

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实现多个组件的数据共享。


相关文章
|
Cloud Native Devops 持续交付
【云原生|云原生基础】什么是云原生?一文给你讲清楚!
【云原生|云原生基础】什么是云原生?一文给你讲清楚!
7189 1
|
数据采集 缓存 前端开发
服务器端渲染(SSR)
服务器端渲染(SSR)
|
SQL 存储 开发工具
vanna+qwen实现私有模型的SQL转换
本文档介绍了如何在本地部署Vanna服务以使用Qwen模型进行text2sql转换。首先,通过`snapshot_download`下载Qwen-7B-Chat模型,并安装相关依赖。接着,修改`openai_api.py`设置本地LLM服务接口。然后,安装并配置Vanna Flask服务,包括自定义LLM服务、连接数据库以及修改端口。为了解决内网访问问题,使用ngrok或natapp进行内网穿透,提供公网访问。最后,处理了chromadb包中自动下载资源的问题,以防网络不佳导致的失败。通过这些步骤,实现了使用本地Qwen模型的Vanna服务。
11374 9
|
缓存 JavaScript 前端开发
js开发:请解释什么是Webpack,以及它在项目中的作用。
Webpack是开源的JavaScript模块打包器,用于前端项目构建,整合并优化JavaScript、CSS、图片等资源。它实现模块打包、代码分割以提升加载速度,同时进行资源优化和缓存。Webpack的插件机制可扩展功能,支持热更新以加速开发流程。
164 2
|
机器学习/深度学习 人工智能 自然语言处理
大模型时代下,算法工程师发展趋势及技术拓展
大模型时代下,算法工程师发展趋势及技术拓展
大模型时代下,算法工程师发展趋势及技术拓展