在原react项目中集成使用Redux(使用步骤总结)

简介: 之前写的一个react项目,需要在里面使用Redux,记录一下实现的步骤

前言

之前写的一个react项目,需要在里面使用Redux,记录一下实现的步骤

安装Redux

要在项目中使用,所以先来安装一下redux 和 react-redux

cnpm i -D redux react-r

这里是使用redux完成这个项目中菜单的一些功能,下面列举的新建文件相关的功能在之前文章有说明,这里就不叙述了

新建使用Redux的相关文件

在 src 目录下新建 store 文件夹用作仓库,
在store下新建文件:

1.新建contants.js进行定义一个名字

export const SWITCH_MENU = 'SWITCH_MENU'

2.新建index.js在里面进行创建:

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

const store = createStore(reducer)

export default store

3.新建action.js

import { SWITCH_MENU } from './contants'

export const switchMenuAction = menuName => ({
    type: SWITCH_MENU,
    menuName
})

4.新建reducer.js建立连接

import { SWITCH_MENU } from './contants'

const initState = {
    menuName: '首页'
}

const reducer = (state = initState, action) => {
    switch(action.type) {
        case SWITCH_MENU:
            return {...state, menuName: action.menuName}
        default:
            return state
    }
}

export default reducer

全局使用Redux

想要全局使用,就需要使用Provider组件进行一个包裹
来到根目录src下的index.js文件:
先引入Provider和需要用到的store

import { Provider } from 'react-redux'
import store from './store'

然后使用 Provider 进行包裹,并将store传进去:

ReactDOM.render(
  <Provider store={store}>
    <BrowserRouter>
      <App />
    </BrowserRouter>
  </Provider>,
  document.getElementById('root')
);

在导航页面进行使用,完成功能

来到nav文件夹下的index.js文件
引入 connect 和 switchMenuAction

import { connect } from 'react-redux'
import { switchMenuAction } from '../../store/action'

在最下面调用connect,然后将Index传入进去(Index是这里使用的组件名):

export default connect()(Index)

定义一个switchMenu函数:
调用dispatch在里面定义switchMenuAction并传入menuName,因为我们最终就是通过menuName进行展示

switchMenu(menuName) {
    const { dispatch } = this.props
    dispatch(switchMenuAction(menuName))
}

然后就直接在渲染的menu.item中定义点击事件,这样就能进行菜单的切换:

getMenuItem = (data) => {
    // console.log(data)
    return data.map(item => {
        if (item.children) {
            return <SubMenu key={item.key} title={item.title}>
                {this.getMenuItem(item.children)}
            </SubMenu>
        } else {
            return <Menu.Item key={item.key} title={item.title}
            onClick={e => this.switchMenu(item.title)}>
                <Link to={item.key}>{item.title}</Link>
                </Menu.Item>
        }
    })
}

最后

好了本篇文章就到此结束了,主要讲了如何在已有项目中集成使用redux。大概总结下就以下步骤:

  1. 导包安装redux
  2. 新建仓库相关的文件并进行定义创建联系
  3. 在需要的地方进行使用

如果对redux基础不太清楚的可以看看之前的几篇文章:
Redux的基础用法详解(纯函数的概念)
在react项目实战中使用Redux(案例讲解)

相关文章
|
30天前
|
存储 JavaScript 数据库
ToB项目身份认证AD集成(一):基于目录的用户管理、LDAP和Active Directory简述
本文介绍了基于目录的用户管理及其在企业中的应用,重点解析了LDAP协议和Active Directory服务的概念、关系及差异。通过具体的账号密码认证时序图,展示了利用LDAP协议与AD域进行用户认证的过程。总结了目录服务在现代网络环境中的重要性,并预告了后续的深入文章。
|
30天前
|
人工智能 JavaScript 网络安全
ToB项目身份认证AD集成(三完):利用ldap.js实现与windows AD对接实现用户搜索、认证、密码修改等功能 - 以及针对中文转义问题的补丁方法
本文详细介绍了如何使用 `ldapjs` 库在 Node.js 中实现与 Windows AD 的交互,包括用户搜索、身份验证、密码修改和重置等功能。通过创建 `LdapService` 类,提供了与 AD 服务器通信的完整解决方案,同时解决了中文字段在 LDAP 操作中被转义的问题。
|
1月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
69 0
|
30天前
|
安全 Java 测试技术
ToB项目身份认证AD集成(二):快速搞定window server 2003部署AD域服务并支持ssl
本文详细介绍了如何搭建本地AD域控测试环境,包括安装AD域服务、测试LDAP接口及配置LDAPS的过程。通过运行自签名证书生成脚本和手动部署证书,实现安全的SSL连接,适用于ToB项目的身份认证集成。文中还提供了相关系列文章链接,便于读者深入了解AD和LDAP的基础知识。
|
1月前
|
Java Shell 开发工具
git集成IDEA,托管项目实现版本管理
git集成IDEA,托管项目实现版本管理
33 0
|
1月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
143 0
|
2月前
|
前端开发 JavaScript 开发者
Express.js与前端框架的集成:React、Vue和Angular的示例与技巧
本文介绍了如何将简洁灵活的Node.js后端框架Express.js与三大流行前端框架——React、Vue及Angular进行集成,以提升开发效率与代码可维护性。文中提供了详细的示例代码和实用技巧,展示了如何利用Express.js处理路由和静态文件服务,同时在React、Vue和Angular中构建用户界面,帮助开发者快速掌握前后端分离的开发方法,实现高效、灵活的Web应用构建。
54 3
|
4月前
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
290 6
|
4月前
|
Java 关系型数据库 MySQL
如何实现Springboot+camunda+mysql的集成
【7月更文挑战第2天】集成Spring Boot、Camunda和MySQL的简要步骤: 1. 初始化Spring Boot项目,添加Camunda和MySQL驱动依赖。 2. 配置`application.properties`,包括数据库URL、用户名和密码。 3. 设置Camunda引擎属性,指定数据源。 4. 引入流程定义文件(如`.bpmn`)。 5. 创建服务处理流程操作,创建控制器接收请求。 6. Camunda自动在数据库创建表结构。 7. 启动应用,测试流程启动,如通过服务和控制器开始流程实例。 示例代码包括服务类启动流程实例及控制器接口。实际集成需按业务需求调整。
368 4
|
4月前
|
消息中间件 Java 测试技术
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
319 1