在原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(案例讲解)

猜你喜欢

转载自blog.csdn.net/weixin_45745641/article/details/124029492