广告
返回顶部
首页 > 资讯 > 前端开发 > html >vue状态管理实例分析
  • 435
分享到

vue状态管理实例分析

2024-04-02 19:04:59 435人浏览 薄情痞子
摘要

这篇文章主要介绍“Vue状态管理实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue状态管理实例分析”文章能帮助大家解决问题。场景:一个地图应用,有个侧边栏

这篇文章主要介绍“Vue状态管理实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue状态管理实例分析”文章能帮助大家解决问题。

场景:一个地图应用,有个侧边栏,侧边栏里面放着很多选项,选项改变的时候,应用会根据侧边栏的条件请求数据,然后在地图上放 markers 。页面可以简单抽象成如下结构:

// App.vue

<div>

  <sidebar></sidebar>

  <map></map>

</div>

有很多种方式可以来完成上面的需求,我先介绍 2 种常见的做法,最后再给出一个比较另类但很有趣的方案。

1.直接上 vuex

通常来讲,有多个组件共享状态的时候,把共享的状态丢给 vuex 来处理是个不错的方案。但是在处理上面那个场景的时候,会显示的有点「笨重」,因为侧边栏实际上是一个表单,如果使用 vuex 的话,就需要为每个选项定义一套 mutation,失去了直接使用 v-model 的便利。

直接使用组件状态绑定一个选项

// sidebar.vue

<input v-model="message">

// ...

data () {

  return {

    message: ''

  }

当使用 vuex 绑定一个选项时,多了不少「模板」代码

// 定义 state, mutation

state: {

  message: ''

},

mutations: {

  updateMessage (state, message) {

    state.message = message

  }

}

// sidebar.vue

<input :value="message" @input="updateMessage">

// ...

computed: {

  ...mapState({

    message: state => state.message

  })

},

methods: {

  updateMessage (e) {

    this.$store.commit('updateMessage', e.target.value)

  }

}

2.将状态放到父组件上

如果 sidebar 和 map 有一个共同的父级,使用这种方式处理起来会比上面的简单很多。但是当我们的应用越来越大的时候,往往会把 sidebar 和 map 拆成颗粒度更小的组件,那么通过 props 一层层传给子组件也会变的非常麻烦。

3.将组件状态「共享」出来

我们通常把组件内的状态写成下面这种形式:

// ...

data () {

  return {

     message: ''

  }

}

实际上,我们可以把 data () {} 中返回的对象单独提取到外面,作为一个变量,像下面这种写法:

const state = { message: '' }

// ...

data () {

  return state

}

那么在这个组件初始化过程中,state 对象会被 vue 「响应式化」,这会引出一个有趣的事情:任何组件,只要模版中使用了 state.message ,当 state.message 改变时,页面都会被同步更新。

知道了这个之后,我们就可以将侧边栏的状态写成一个独立的文件,作为一个模块引入其他组件中,结构如下:

// state.js

export default { message: '' }

// sidebar.vue

<input v-model="state.message" />

import state from 'path/to/state.js'

// ...

data () {

  return { state }

}

// map.vue

// 在模版中使用侧边栏的状态

<div>{{ state.message }}</div>

import state from 'path/to/state.js'

// ...

data () {

  return { state }

},

created () {

  // 将侧边栏的状态作为参数去请求数据

  axiOS.get('/xxxx', { params: state })

}

这样做的一个好处是,既可以在 sidebar.vue 中把 state 当作「内部」状态,愉快的使用 v-model 绑定数据,map.vue 中也可以方便的拿到 state 做为参数请求,同时还可以直接在 map.vue 的模版中使用 &mdash;&mdash;state.message&mdash;&mdash;。

更进一步

上面的方案中,state「响应式化」是发生在子组件初始化的过程中,我希望能在应用开始的时候,主动在某个时刻完成这一步。这个时候就可以借助 Vue 构造函数,像下面这样:

// store.js

import state from 'path/to/state.js'

new Vue({

  data: {

    state

  }

})

然后在主文件 main.js 中引入 store.js,state 就会被「响应式化」。

关于“vue状态管理实例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网html频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: vue状态管理实例分析

本文链接: https://www.lsjlt.com/news/92058.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue状态管理实例分析
    这篇文章主要介绍“vue状态管理实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue状态管理实例分析”文章能帮助大家解决问题。场景:一个地图应用,有个侧边栏...
    99+
    2022-10-19
  • Vue 2.X中状态管理vuex的示例分析
    这篇文章将为大家详细讲解有关Vue 2.X中状态管理vuex的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。示例:记住上述的顺序情况:想要改变state,只能通过...
    99+
    2022-10-19
  • vue中状态管理模式vuex的示例分析
    这篇文章主要介绍了vue中状态管理模式vuex的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。vuex是一个专门为vue.js设计的...
    99+
    2022-10-19
  • vuex状态管理模式的示例分析
    小编给大家分享一下vuex状态管理模式的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、前言本次接受一个BI系统,要求...
    99+
    2022-10-19
  • vue组件化开发种vuex状态管理库的示例分析
    这篇文章主要介绍vue组件化开发种vuex状态管理库的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中...
    99+
    2022-10-19
  • HTTP状态码实例分析
    本篇内容介绍了“HTTP状态码实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器...
    99+
    2023-06-27
  • vuejs中vuex状态管理模式的示例分析
    这篇文章给大家分享的是有关vuejs中vuex状态管理模式的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。关于vuex类的新闻最近很多,看到眼热就去查了下资料,然后扯出来...
    99+
    2022-10-19
  • React 状态管理工具优劣势示例分析
    目录什么是状态管理React 状态管理方案方案介绍方案对比Source相关建议什么是状态管理 “状态”是描述应用程序当前行为的任何数据。这可能包括诸如&ld...
    99+
    2023-01-13
    React 状态管理工具优劣势 React 状态管理工具
  • ASP.NET复杂属性和状态管理举例分析
    本篇内容介绍了“ASP.NET复杂属性和状态管理举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!ASP.NET组件设计之复杂属性声明/...
    99+
    2023-06-18
  • Flutter状态管理Provider示例解析
    目录什么是状态管理常见的状态管理框架有哪些ProviderReduxGetXProvider 使用添加依赖导入应用定义需要共享的数据在应用程序入口初始化使用共享数据状态管理的好处结束...
    99+
    2022-12-08
    Flutter状态管理Provider Flutter Provider
  • Vue之Pinia状态管理
    目录一、认识Pinia1.1 认识Pinia1.2 为什么使用Pinia?二、 Store2.1 定义Store2.2 Option对象2.3 setup函数2.4 使用定义的Sto...
    99+
    2023-05-14
    Javascript Vue Pinia状态管理 Vue Pinia状态管理 Pinia状态管理
  • MYSQL state状态举例分析
    这篇文章主要讲解了“MYSQL state状态举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MYSQL state状态举例分析”吧! ...
    99+
    2022-10-19
  • Vue状态管理工具Vuex工作原理解析
    目录一、什么是vuex二、vuex的工作方式三、vuex的使用场景四、工作流程五、vuex的核心API六、应用七、vuex的工作流程一、什么是vuex Vuex是vue项目的状态管理...
    99+
    2023-02-01
    Vue状态管理工具Vuex Vue状态管理器Vuex Vue Vuex
  • java之Hibernate状态整理的示例分析
    这篇文章主要介绍了java之Hibernate状态整理的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Java有哪些集合类Java中的集合主要分为四类:1、List列...
    99+
    2023-06-14
  • HTTP状态码的示例分析
    这篇文章将为大家详细讲解有关HTTP状态码的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。HTTP 状态码1、状态码分类  - 1xx:信息,服务器收到...
    99+
    2022-10-19
  • java线程池状态有哪些及状态转换实例分析
    这篇文章主要介绍“java线程池状态有哪些及状态转换实例分析”,在日常操作中,相信很多人在java线程池状态有哪些及状态转换实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java线程池状态有哪些及状态...
    99+
    2023-06-30
  • K8S之StatefulSet有状态服务实例分析
    这篇文章主要介绍“K8S之StatefulSet有状态服务实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“K8S之StatefulSet有状态服务实例分析”文章能帮助大家解决问题。一、概念1....
    99+
    2023-07-02
  • vue父子组件之模态框状态绑定的示例分析
    小编给大家分享一下vue父子组件之模态框状态绑定的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!日常开发中经常遇到的一个...
    99+
    2022-10-19
  • MySQL线程状态的示例分析
    这篇文章主要介绍了MySQL线程状态的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。文章目录一、show processlist二、...
    99+
    2022-10-18
  • MySQL主线程状态举例分析
    这篇文章主要介绍“MySQL主线程状态举例分析”,在日常操作中,相信很多人在MySQL主线程状态举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL主线程状态举例...
    99+
    2022-10-19
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作