怎么在React项目中使用Redux
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章主要介绍"怎么在React项目中使用Redux",在日常操作中,相信很多人在怎么在React项目中使用Redux问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎
千家信息网最后更新 2025年11月09日怎么在React项目中使用Redux
这篇文章主要介绍"怎么在React项目中使用Redux",在日常操作中,相信很多人在怎么在React项目中使用Redux问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么在React项目中使用Redux"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
首先我们会用到哪些框架和工具呢? React UI框架 Redux 状态管理工具,与React没有任何关系,其他UI框架也可以使用Redux react-redux React插件,作用:方便在React项目中使用Redux react-thunk 中间件,作用:支持异步action
|--src |-- store Redux目录 |-- actions.js |-- index.js |-- reducers.js |-- state.js |-- components 组件目录 |-- Test.jsx |-- App.js 项目入口
准备工作 第1步:提供默认值,既然用Redux来管理数据,那么数据就一定要有默认值,所以我们将state的默认值统一放置在state.js文件:
// state.js// 声明默认值// 这里我们列举两个示例// 同步数据:pageTitle// 异步数据:infoList(将来用异步接口获取)export default { pageTitle: '首页', infoList: []}第2步:创建reducer,它就是将来真正要用到的数据,我们将其统一放置在reducers.js文件
// reducers.js// 工具函数,用于组织多个reducer,并返回reducer集合import { combineReducers } from 'redux'// 默认值import defaultState from './state.js'// 一个reducer就是一个函数function pageTitle (state = defaultState.pageTitle, action) { // 不同的action有不同的处理逻辑 switch (action.type) { case 'SET_PAGE_TITLE': return action.data default: return state }}function infoList (state = defaultState.infoList, action) { switch (action.type) { case 'SET_INFO_LIST': return action.data default: return state }}// 导出所有reducerexport default combineReducers({ pageTitle, infoList//欢迎加入全栈开发交流圈一起学习交流:864305860})//面向1-3年前端人员//帮助突破技术瓶颈,提升思维能力第3步:创建action,现在我们已经创建了reducer,但是还没有对应的action来操作它们,所以接下来就来编写action
// actions.js// action也是函数export function setPageTitle (data) { return (dispatch, getState) => { dispatch({ type: 'SET_PAGE_TITLE', data: data }) }}export function setInfoList (data) { return (dispatch, getState) => { // 使用fetch实现异步请求 window.fetch('/api/getInfoList', { method: 'GET', headers: { 'Content-Type': 'application/json' } }).then(res => { return res.json() }).then(data => { let { code, data } = data if (code === 0) { dispatch({ type: 'SET_INFO_LIST', data: data }) } }) }}最后一步:创建store实例
// index.js// applyMiddleware: redux通过该函数来使用中间件// createStore: 用于创建store实例import { applyMiddleware, createStore } from 'redux'// 中间件,作用:如果不使用该中间件,当我们dispatch一个action时,需要给dispatch函数传入action对象;但如果我们使用了这个中间件,那么就可以传入一个函数,这个函数接收两个参数:dispatch和getState。这个dispatch可以在将来的异步请求完成后使用,对于异步action很有用import thunk from 'redux-thunk'// 引入reducerimport reducers from './reducers.js'// 创建store实例let store = createStore( reducers, applyMiddleware(thunk))export default store至此,我们已经完成了所有使用Redux的准备工作,接下来就在React组件中使用Redux
开始使用 首先,我们来编写应用的入口文件APP.js
// App.jsimport React from 'react'import ReactDOM from 'react-dom'// 引入组件import TestComponent from './components/Test.jsx'// Provider是react-redux两个核心工具之一,作用:将store传递到每个项目中的组件中// 第二个工具是connect,稍后会作介绍import { Provider } from 'react-redux'// 引入创建好的store实例import store from '@/store/index.js'// 渲染DOMReactDOM.render ( ( {/* 将store作为prop传入,即可使应用中的所有组件使用store */} ), document.getElementById('root'))最后是我们的组件:Test.jsx
// Test.jsximport React, { Component } from 'react'// connect方法的作用:将额外的props传递给组件,并返回新的组件,组件在该过程中不会受到影响import { connect } from 'react-redux'// 引入actionimport { setPageTitle, setInfoList } from '../store/actions.js'class Test extends Component { constructor(props) { super(props) } componentDidMount () { let { setPageTitle, setInfoList } = this.props // 触发setPageTitle action setPageTitle('新的标题') // 触发setInfoList action setInfoList() } render () { // 从props中解构store let { pageTitle, infoList } = this.props // 使用store return ( {pageTitle}
{ infoList.length > 0 ? ( { infoList.map((item, index) => { - {item.data}
}) }
):null } ) }}// mapStateToProps:将state映射到组件的props中const mapStateToProps = (state) => { return { pageTitle: state.pageTitle, infoList: state.infoList }}// mapDispatchToProps:将dispatch映射到组件的props中const mapDispatchToProps = (dispatch, ownProps) => { return { setPageTitle (data) { // 如果不懂这里的逻辑可查看前面对redux-thunk的介绍 dispatch(setPageTitle(data)) // 执行setPageTitle会返回一个函数 // 这正是redux-thunk的所用之处:异步action // 上行代码相当于 /*dispatch((dispatch, getState) => { dispatch({ type: 'SET_PAGE_TITLE', data: data }) )*/ }, setInfoList (data) { dispatch(setInfoList(data)) } }}export default connect(mapStateToProps, mapDispatchToProps)(Test)到此,关于"怎么在React项目中使用Redux"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
组件
函数
项目
中间件
作用
工具
数据
学习
实例
接下来
两个
文件
框架
帮助
不同
入口
就是
方法
更多
目录
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
3级网络技术必过笔记
信息网络技术职业教育
有关网络安全问题的ppt
网络安全等级保护措施包括
服务器有几个内存条插槽
安全可控服务器目录
学做网络安全
net core 服务器缓存
兄弟标签机怎么连接数据库打印
南京网络软件开发创新服务
下面哪项不是数据库管理的目标
数据库 物化视图
服务器管理软件集成平台
方舟生存进化888服务器
自然基金软件开发劳务费怎么算
软件开发定制公司怎么推广
西宁软件开发师安生龙
网络安全法施行时间是几几年
柯美303服务器管理密码
浪潮服务器光盘装系统
捷益定制软件开发
智联网络技术有限公司邮箱
数据库技术是啥有哪些
网络安全宣传活动的证书有用吗
长治网络技术团队
电脑邮箱连接服务器失败
政府项目管理软件开发的问题
数据库的总结与反思
网络安全真的有必要学吗
北京铁路网络安全知识答题答案