[Vue] 5. 试试Vuex

PX4自定义uORB消息与MAVLink消息映射实战:从飞控到QGC地面站完整流程解析 本文详细解析PX4飞控中自定义uORB消息与MAVLink消息映射的完整流程,涵盖从飞控内部消息定义、MAVLink消息创建到QGC地面站接收显示的全链路实践。重点介绍如何使用mavlink inspector工具进行调试,解决版本兼容性和多实例消息处理等常见问题,为无人机开发者提供可靠的实时数据监控方案。 阅读详情

一、以前写的demo

Vue-cli:4.2.3

demo地址:https://gitee.com/animalcoder/Vue

效果:维护监听List的内容(title,content ),显示到页面Son1 中,Son2 点提交,添加List

 

实现思路:

引入Vuex 依赖

     npm install xxxx -save ,import..........

新建store.js :   

    state:声明变量List (存标题与内容); mutations:声明增加方法Add()

Son2.Vue :

    data:声明变量title,content ;

    声明方法X(),X()里面调用store.js的增加方法Add(),将title,content数据插入List;

    html的<input>用v-model双向绑定title content;

    提交按钮绑定调用方法X();

Son1.Vue:

    computed:动态监听List :新建方法 pageLists()返回store.js里面的List ;利用<li v-for> 显示

...
<li v-for="(item,idx) in pageLists" :key="idx" style="color:black;">
    ...
</li>  
...


import store from "@/store"; //取出存储器里面的lists
export default {
  name: "List",
  store,
  computed: {
    //动态监听变化
    pageLists: () => store.state.lists
  },
  ...
}

补上localStorage,使得关闭浏览器也能有数据

注意List  的localStorage存储方式    

取:xxx=JSON.parse(localStorage.getItem("list1"))

存:localStorage.setItem("list1",JSON.stringify(state.lists))

 

store.js

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

let defaultlist=[]
try {//
    if(localStorage.getItem("list1")){
        defaultlist=JSON.parse(localStorage.getItem("list1"))
    }
}catch(e){

}
export default new Vuex.Store({

    state:{//状态
        lists:defaultlist
    },
    mutations: {  //更改事件
        addItems (state , value){
            state.lists.push(value)
            localStorage.setItem("list1",JSON.stringify(state.lists))
        }
    },
    actions: {

    }
})

 


 

二、试试分模块的vuex

效果:

index.js是总的vuex,user.js是子模块

index.js

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

import user from './modules/user'


const store= new Vuex.Store({
    modules: {
        user:user
    },
    
})
export default store  //暴露变量到其他文件

user.js

const user={
    state:{
        username:'',
    },
    mutations:{
        SET_NAME:(state,name)=>{
            console.log("user set name"+name)
            state.username=name;
        }
    },
    getters:{
        name: state => state.user.name,
    }
}
export default user

在Test.vue使用vuex

注意,只有state才是分模块,commit的函数都是总的(不同模块的函数名不能重复),所以不能写成store.xxx.commit

直接store.commit

访问user的state的变量:store.state.user.username

<template>
  <div class="test">

      <input type='text' v-model="input1"/>
      <el-button  @click="summit()">提交</el-button>
      <p>gogogo{{title}}</p>

      
  </div>
</template>

<script>
import store from '../store/index'  //引入总vuex
export default {
  store,
  data() {
    return {
      title: "",
      input1:"",
    };
  },
  methods: {
    summit(){
        store.commit("SET_NAME",this.input1)
        this.title = store.state.user.username;
    }
  },
};
</script>

 


三、action初探

众所周知,变更状态的方法都写在mutations中

actions 提交的是 mutations,而不是直接变更状态。

actions 的用处是可以包含任意异步操作。

 

action的参数解构: 

actions里的xxx({commit},参数)看不懂系列

mutations: {
    increment1 (state) {
      state.count++
    }
},



actions: {
    increment (context) {
      context.commit('increment1')
    }
  }
等价于
actions: {
  increment ({ commit }) {
    commit('increment1')
  }
}

 

四、试试异步调用actions里的函数

 

在其他.vue

使用this.$store.dispatch('actions方法名',actions方法名的参数) 

 异步调用actions中的方法

.then()代表异步成功调用后才执行的逻辑

.catch()代表异步失败调用后才执行的逻辑

  methods: {
    getFuck() {},
    summit(){
        //store.commit("SET_NAME",this.input1)  同步调用

        //异步调用
         this.$store
            .dispatch('Login', this.input1)
            .then(() => {
              console.log("Login succ!")
              this.title = store.state.user.username;
              //this.$router.push({ path:  "/" });
            })
            .catch((error) => {
               console.log("???"+error)
            });
        //异步调用的过程中,会先调用下面的语句
          console.log("end")
    }
  },

 

在actions声明Login方法,axios.get()异步调用后端接口

代码解释:Login返回Promise对象,

if(成功){ 使用resolve(xxx)} 会返回到前面dispatch的.then()中, 这个xxx就是前面dispatch.then((xxx)=>{...})的xxx

if(失败{ 使用reject(xxx)} 会返回到前面dispatch的.catch()中,这个xxx就是前面dispatch.catch((xxx)=>{...})的xxx

 

当然,我们还要commit mutations中的方法来改变vuex中的状态,因为不要忘了actions 本身提交的是 mutations

 actions:{//用于$store.dispatch异步调用

     
        Login({ commit }, username) {  //login返回一个Promise对象  
            
            return new Promise((resolve, reject) => {//将登录axios异步处理,否则会拿不到数据
                axios.get('http://localhost:12177/login',{params:{'username':username}}).then(res => {//异步处理login后回调逻辑,更新姓名
                let res1=JSON.stringify(res.data)//对象转为json
                console.log("res="+res1)
                res1=JSON.parse(res1)//json串转为对象
                
                commit('SET_NAME', res1.data)//SET_TIME 是mutations中的方法
                
                resolve()  //表示promise已完成  resolve()中可加参数X代表Login成功的返回X
              })
              .catch(error => { //异常处理
                console.log("error:"+error)
                reject(error)
              })
            })
        },
    }

 

YOLO26涨点改进 | 全网独家首发 主干改进篇 | TGRS 2025 | RepViT-TD,告别庞大骨干!YOLO26 + RepViT-TD轻量又强大,实现更快更准的小目标检测! 本文提出将RepViT-TD轻量级主干网络应用于YOLO26目标检测框架,以提升小目标检测性能。RepViT-TD通过优化计算资源分配,强化前两层高分辨率特征提取能力,在保持轻量化的同时(仅4.85M参数)显著提升微小目标的检测精度(AI-TODv2数据集AP50达54.6%)。文章详细介绍了三种主干改进方案(RepVit_ldy1/2/3)的代码实现,并提供了完整的YAML配置文件修改指南,使模型能高效部署于边缘设备。实验表明,该方法在计算复杂度(38.19G FLOPs)和检测精度间取得了良好平衡。 阅读详情

相关推荐

基于DFT的scanshift sdc模板(DFT)

摘要:本文详细介绍了DFT测试模式下的SDC约束方法。

murphyrong的博客 884

前端关于Vue的面试题(四)

45.vue-router的动态路由匹配以及使用 动态路径匹配:即把某种模式匹配到的所有路由,全都映射到同个组件。使用动态路由参数来实现。 const User = { template: '<div>User</div>' } const router = new VueRouter({ routes: [ // 动态路径参数 以冒号开头 { p...

Jojorain的博客 580

景观格局指数计算方法及代表的生态学意义(待补充)

景观指数 斑块密度(PD) 斑块密度(PD)表现某种斑块在景观中的密度,可反映出景观整体的异质性与破碎度[17],公式为PD=NP/A(1)式中NP———斑块数量,个A———景观或斑块的总面积,hm2PD———斑块密度,个/hm2 最大斑块指数(LPI) 最大斑块指数(LPI)用于确定景观中的优势斑块类型,间接反映人类活动干扰的方向和大小,公式为LPI=amaxA×100%(0≤LPI≤100%)(2)式中amax———景观或某一种斑块类型中最大斑块的面积,hm2LPI———最大斑块指数,% 凝聚

soderayer的博客 13万+

Vuex ——详细介绍

Vuex 是一个专门为 Vue.js 应用程序开发的状态管理模式,它采用集中式存储管理应用的所有组件状态,并以相应的规则保证状态以一种可预测的方式发生变化。可以理解为:将多个组件共享的变量全部存储在一个对象里面,然后将这个对象放在顶层的 Vue 实例中,让其他组件可以使用,它最大的特点是响应式。 一般情况下,我们会在 Vuex 中存放一些需要在多个界面中进行共享的信息。比如用户的登录状态、用户名称、头像、地理位置信息、商品的收藏、购物车中的物品等,这些状态信息,我们可以放在统一的地方,对它进行保存和管理。

A____t的博客 4万+

使用ACOLITE对OLCI影像进行大气校正+批处理

使用ACOLITE对OLCI影像进行大气校正+批处理

mrzhy1的博客 7359

解锁Cherry Studio高阶玩法:用MCP实现自动化测试与数据爬取

本文深入探讨了如何利用MCP协议与Cherry Studio结合,实现自动化测试与数据爬取的高阶应用。通过Playwright等工具的MCP集成方案,详细解析了自动化测试流水线构建和智能爬虫系统开发的关键技术,显著提升工程效率和系统适应性。

defi6farmer的博客 275

下班前几分钟,我学会了如何使用 Vuex

目录 前言 正文 一、基本概念 二、项目场景 三、如何使用 1、安装 2、State 初始值 3、Getters 修饰值 4、Mutations 修改值 5、Actions 异步修改值 四、总结 五、建议 何时使用 Vuex ? 前言 本人曾对 Vuex 作过详细介绍,但是今天去回顾的时候发现文章思路有些繁琐,不容易找到重点。于是,在下班前几分钟,我对其重新梳理了一遍。 tips:本文的案例均为Vue2版本。 正文 一、基本概念 Vuex 是一个专为 Vue.js

高大志leo的博客 6601

Cadence原理图设计10个高效技巧:从封装绑定到BOM表导出全流程

本文为硬件工程师提供了一套Cadence OrCAD Capture CIS原理图设计的高效实战指南。文章深度解析了从封装库的精准管理与CIS数据库绑定、封装批量处理技巧,到设计缓存清理、跨页信号追踪,再到关键的DRC检查、网表导出以及智能BOM报表生成的全流程核心技巧,旨在帮助工程师提升设计效率与可靠性,规避常见错误。

weixin_29178069的博客 201

Weex环境构建(二)Vuex

Vuex

ker的博客 3147

ABAP Open SQL 数据拷贝导致 SAPSQL_DATA_LOSS:从报错机理到稳妥修复

数据类型与长度不合规。一旦在Open SQL的无损赋值检查里被发现,系统宁可中止也不会偷偷替你截断。把变量声明对齐到字典、在需要时明确表达转换/截断意图、写法上避免落入高危的操作数位置,再配合ATC的预防性检查,既能解决你这次的ST22Dump,也能把同类问题消灭在萌芽状态。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 427

❤️爆肝十二万字《python从零到精通教程》,从零教你变大佬❤️(建议收藏)

文章目录强烈推荐系列教程,建议学起来!!一.pycharm下载安装二.python下载安装三.pycharm上配置python四.配置镜像源让你下载嗖嗖的快4.1pycharm内部配置4.2手动添加镜像源4.3永久配置镜像源五.插件安装(比如汉化?)5.1自动补码神器第一款5.2汉化pycharm5.3其它插件六.美女背景七.自定义脚本开头八、这个前言一定要看九、python入门十、python缩进十一、Python注释1.单行注释2.多行注释十二、Python 变量1.变量定义理解2. 变量名命名3. 分

全栈川川 26万+

vuex学习六----actions

1:ActionsAction类似于mutation。不同在于: Action提交的是mutation,而不是直接变更状态; Action可以包含任意异步操作; const store=new Vuex.Store({ state:{ count:0 }, mutation:{ increment(state){ sta

前端菜鸟 9260

yolov26改进 | Neck/颈部创新篇 | 独创HFPN利用分层特征融合块HFFB模块融合多层次特征改进yolov26(全网独家创新)

本文提出了一种创新的分层特征融合模块HFFB(Hierarchical Feature Fusion Block)来改进YOLOv26的neck部分,构建了名为HFPN的新型特征金字塔网络。该模块通过三分支结构融合局部特征(CNN提取)、全局特征(Swin Transformer提取)和中间特征,并包含空间注意力(SA)、通道注意力(CA)和残差反向MLP(IRMLP)等组件来优化特征融合效果。实验表明,该方法能针对不同尺度目标(大/中/小)进行自适应检测,可根据具体数据集需求选择不同配置。文章详细提供了核

Snu77的博客 483

在 vue 组件中查看 vuex 定义

原文:在 vue 组件中查看 vuex 定义 在进行 vue 项目开发的时,如果项目中用到了 vuex 做状态管理,经常需要查看 store 里面定义的状态属性。但是在 vue 组件中引用这些 vuex 属性,并非像引用静态资源那样通过路径去查找,所以不能直接跳转到定义。 针对这个痛点,我写了一个 vscode 的插件 vuex peek,效果如下: 使用方法 我们在组件中使用 state ...

weixin_33898233的博客 2280

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

vuex安装 vuex的使用 vue状态管理使用教程

原文地址http://www.sharedblog.cn/?post=209 附Demo下载地址https://www.lanzous.com/i8azkib 首先,第一步,相信大家已经搭建好vue框架了,搭建好,启动如下图所示 vue搭建好之后,我们开安装vuex 首先,我们输入命令 npm install vuex --save 接着,我们启动项目 n...

鹏仔工作室的秘密基地 639

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Vuex源码分析

一、前言 我们都知道,vue组件中通信是用props进行父子通信,或者用provide和inject注入的方法,后者类似与redux的porvider,父组件使用,包含在里面的子组件都可以使用,provide/inject用法看我的博客(provide/inject用法),provide/indect官方文档,不过provide/indect一般用的不多,都是用前者,但是props有一个问题,父传...

yuanqi3131的博客 861

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

使用Vuex

文章目录不使用Vuex使用Vuex 不使用Vuex 组件Count.vue <template> <div class="box"> <h2>当前和的值为:{{sum}}</h2> <select v-model.number="n"> <option value="1">1</option> <option value="2">2</option>

richest_qi的博客 648

【Vue】vuex 求和案例

【Vue】vuex 求和案例

one or only的博客 894

Vue3 Provide vs Vuex:开发效率对比实测

通过这次对比,我深刻体会到不同状态管理方案的适用场景。对于大多数中小型Vue3项目,Provide/Inject已经足够强大,能显著提升开发效率。而Vuex仍然是复杂场景下的可靠选择。这次实验我是在InsCode(快马)平台上完成的,它的在线编辑器和一键部署功能让对比测试变得非常方便。特别是可以快速创建多个项目进行对比,省去了本地环境配置的麻烦。对于想尝试这种对比实验的开发者,我强烈推荐试试这个平台。

AmberLeopard26的博客 367

vue和vuex版本不兼容!npm下载任何依赖报错,ERESOLVE could not resolve

vue和vuex版本不兼容!npm下载任何依赖报错,ERESOLVE could not resolve 方案一:加--force,例如: npm i axios -S --force。方案二:查看报错信息,是vue和vuex版本不兼容,给vuex降个版本试试~原来vuex:4.0.2;降级后:3.6.2。

weixin_54495706的博客 2147

十二、 Vuex 状态管理

一、Vuex 概述 1. 官方文档:https://vuex.vuejs.org/zh/Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 2. Vuex简单理解: Vue 应用中的每个组件在 data() 中封装着自己数据属性,而这些 data 属性都是私有的,完全隔离的。 如果我们希望多个组件都能读取到同一状态数据属性,或者不同组件的行为需要更新同一状态数据属 性, 这就需要一个将共享的状态数据

qq_52335038的博客 244

vue 求和案例(使用vuex解决)

要点: 案例注意点vuex的引入是在store.index.js中 然后就是对于没有逻辑的方法,就可以直接再组件方法调用commit去直接连接mutations:this.$state.commit('大写方法名',数据) 对那些需要逻辑判断定时器,需要发送ajax请求的都需要在组件方法调用dispatch去连接actions在actions里面进行逻辑的判断和ajax请求的发送,:this.$state.dispatch('驼峰命名方法',数据) main.js import Vue fro.

MCCLS的博客 714

Vuex2.0边学边记+两个小例子

转载自:http://www.jianshu.com/p/13bec8f5b17d 最近在研究Vuex2.0,搞了好几天终于有点头绪了。 首先vuex概念比较多,一定要搞懂里面的概念,可以参考官网Vuex2.0概念,我写此文的目的是希望能对前端爱好者提供个参考,加深对vuex2.0各核心概念的理解。 废话少说,直接上干货。这是官网上的一个计数的实例。 先来起个项

wulixiaoxiao1的博客 7331

听说你也想vuex入门,快来瞅瞅吧~走过路过不要错过啦~

vuex入门,包括安装、创建store文件、getters获取数据、mutations修改数据、actions设置异步,推荐chrome扩展程序:Vue.js devtools。欢迎小伙伴们一起交流学习~

安之ccy的博客 2275

Vuex小白入门:5分钟搞懂核心概念

首先定义state存储计数器的值,然后创建mutations来处理增加、减少和重置操作,再添加一个action来模拟异步增加操作,最后添加一个getter来获取当前计数状态。对于想快速上手的前端同学来说,是个不错的练习平台。作为一名刚开始学习Vue.js的前端开发者,我在项目中遇到状态管理的问题时,Vuex这个工具让我眼前一亮。今天我就用最直白的语言,分享一下Vuex的核心概念和使用方法,帮助和我一样的初学者快速上手。Vuex是Vue.js官方推荐的状态管理模式,它采用集中式存储管理应用的所有组件的状态。

SilvermistFalcon19的博客 382

VueJS项目的5个很棒的样板/模板

你要开始一个重要的Vue项目吗?为了确保您从一个坚实的基础开始,您可以使用一个模板(也称为样板、骨架、启动器或脚手架),而不是从npm init或vue init开始。 许多经验丰富的开发人员都以开源模板的形式收集了关于构建高质量Vue应用程序的经验。这些模板包括最佳配置和项目结构、最佳第三方工具和其他开发最佳实践。 与为灵活性进行优化的Vue CLI 3不同,模板是自定义的。因此,选择一个适合您的开发理念,并且具有与您需要的开箱即用的特性大致相同的特性是很重要的。 选择Vue模板的一些考虑事项包

qq_43067585的博客 2811
上一篇: [Vue] 4. vue4打包并发布到springboot里面
下一篇: [Vue]6. 动态路由 模拟新增文章功能
animalcoder
博客等级 码龄9年 43粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值