手把手教你怎样在vue3中使用redux

本文介绍如何在Vue3项目中结合Redux进行状态管理。通过创建Redux store、订阅状态变化并在Vue组件中注入数据,实现了点击侧边栏标签更新页面标题的功能。关键在于在不破坏Vue的数据驱动模式下,将Redux的state注入到Vue的data中,通过组件的响应式系统驱动UI更新。
摘要由CSDN通过智能技术生成

前言
现在的web应用基本上都走上了数据驱动的道路,而数据状态的管理则理所当然成为了项目开发的核心,所以理论上只要统一状态层,view渲染可以随意更换框架和模式。

而我们在做项目的时候大部分都是vue用vuex。react用redux。以至于很多同学都以为所有的状态管理容器是和页面渲染框架一一绑定的,所以突然想实验一下用edux做状态管理,而vue只做一个简单的页面渲染器
在这里插入图片描述

思路

我们知道redux的state 只是一个普通的js对象,是无法感知视图的。redux的整套流程和vue的渲染驱动机制其实是相互独立的。不像vuex本身就是一个vue实例,state属性本身就是reactive的,声明在template里,属性的set的方法会自动收集依赖,也就是vue本身的那套双绑模式。所以vuex不需要做任何操作天然的支持vue,或者说vuex就是一个实现了flux思想的全局vue。

在这里插入图片描述
所以就像官网说的,我们需要做一些简单绑定让redux接入到vue的数据渲染模式中,

然而这个网址已经失效。。。。 ̄□ ̄||

不过redux官网也有通用的ui驱动方案
在这里插入图片描述

大致思路就是在我们dispatch action 之后的回调中对ui层进行更新。不过如果每次state发生变化都对vue进行$forceUpdate不免太僵硬且浪费性能了。

参照react-redux将当前组件需要的参数从redux的state中接管为react组件的状态(props),让组件本身的数据代为驱动ui的更新。

而且vue本身的data就是reactive的,所以只需要将redux中的state注入到vue的data中,在redux的subscribe回调中根据state对data进行修改就可以顺利的驱动vue进行页面渲染。
所以只需要在vue组件挂载之前将state注入到data中即可,如果是vue2,我们只能用mixin将数据混入进组件,不过在vue3中我们则可以用composition component 在setup中进行注入

示例
描述:做一个简单的小功能进行测试,点击sider内页面标签将页面名分发到state中,再驱动header页面更新。

效果:
在这里插入图片描述

步骤:

1 构建redux store

import {
    createSlice, PayloadAction } from '@reduxjs/toolkit'
export interface GlobalState {
   
    currentRoute: string,
}
// 初始化state
const initialState: GlobalState ={
   
    currentRoute: '应用程序管理',
}
export const globalSlice = createSlice({
   
  name: 'global',
  initialState,
  reducers: {
   
    updata: (state, action: PayloadAction<string>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值