vue~vuex的使用

这篇具有很好参考价值的文章主要介绍了vue~vuex的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

存储相关

Vuex 和本地存储(如localStorage)以及 cookie 存储(如 document.cookie)之间有一些关系,但它们是不同的概念,用于不同的目的。

  1. Vuex

    • Vuex 是 Vue.js 的官方状态管理库,用于在 Vue.js 应用程序中管理应用程序的全局状态。
    • Vuex 主要用于在前端应用程序中存储和管理各种状态,包括用户信息、应用程序配置、数据缓存等。它提供了一个中心化的状态存储机制,可以让不同组件之间共享和同步状态。
    • Vuex 的数据存储在内存中,通常不会持久化到硬盘上。
  2. 本地存储(localStorage)

    • localStorage 是浏览器提供的一种本地存储机制,允许你将数据以键值对的形式存储在浏览器中,数据可以在不同页面和会话之间保持持久性。
    • localStorage 主要用于在浏览器中存储小量的数据,如用户配置、用户首选项、临时会话数据等。它是一个简单的持久化数据存储工具。
  3. Cookie 存储

    • cookie 是另一种在浏览器中存储数据的方式,但它通常用于存储小的文本数据,如用户身份验证令牌、会话标识等。
    • cookie 具有一些限制,如每个 cookie 的大小限制和安全性考虑,因此不适合用于存储大量数据或敏感信息。

关系和用途:

  • Vuex 可以与本地存储和 cookie 存储结合使用,以实现更复杂的状态管理和数据持久化。例如,你可以将某些重要的应用程序状态存储在 Vuex 中,同时将用户首选项或会话令牌等数据存储在 localStoragecookie 中。
  • Vuex 可以使用 localStorage 或其他存储机制来实现状态的持久化,以便在页面刷新或重新加载时保持应用程序状态不变。这通常涉及到将状态数据从 Vuex 存储到 localStorage 中,并在应用程序初始化时从 localStorage 恢复状态。

需要注意的是,存储敏感信息(如用户密码)通常不应存储在本地存储或 cookie 中,而应使用更安全的方式,如后端服务器的会话管理或令牌验证。存储在本地的数据应该是非敏感的,并经过适当的加密和安全性处理。

基本属性

Vuex 是 Vue.js 的官方状态管理库,用于在Vue.js应用程序中管理应用程序的全局状态。Vuex.StoreVuex 的核心部分之一,它包含了状态(state)、变化状态的方法(mutations)、触发状态变化的方法(actions)以及获取状态的方法(getters)。

Vuex.Store 中,statemutations 分别用于存储和修改应用程序的状态。

  1. state(状态)state 是应用程序的数据源。它是一个普通的 JavaScript 对象,包含了应用程序的全局状态数据。通过访问 state,你可以获取应用程序的当前状态信息。例如:

    const store = new Vuex.Store({
      state: {
        count: 0
      }
    })
    

    在上面的示例中,state 包含一个名为 count 的状态属性,初始值为 0。

  2. mutations(变化)mutations 是用来修改 state 的方法。它们是同步的函数,每个 mutation 接收一个当前状态的参数(state)和一个用于更新状态的参数(通常称为 payload)。mutations 的主要作用是确保状态变更的可追踪性,因为每个状态的变更都必须经过一个明确的步骤。例如:

    const store = new Vuex.Store({
      state: {
        count: 0
      },
      mutations: {
        increment(state) {
          state.count++
        },
        decrement(state) {
          state.count--
        }
      }
    })
    

    在上面的示例中,我们定义了两个 mutations,分别用于增加和减少 count 状态的值。要触发这些 mutations,你可以通过 store.commit 方法来调用它们:

    store.commit('increment') // 增加 count
    store.commit('decrement') // 减少 count
    

    通过使用 commit 方法,你可以确保在应用程序的状态发生变化时进行跟踪和记录。

总之,Vuex.Store 中的 state 用于存储应用程序的全局状态,而 mutations 用于定义可追踪的方法,用于修改状态。这种明确的状态管理方式有助于在大型应用程序中更好地管理和维护状态。

actions和getters

当使用 Vuex 进行状态管理时,除了 statemutations,还有 actionsgetters 来进一步组织和管理你的应用程序的状态。

  1. Actions(动作)

    • Actions 是用于处理异步操作和业务逻辑的地方。它们可以包含任何 JavaScript 代码,并且可以触发 mutations 来修改 state

    • Actions 是通过 store.dispatch 方法来触发的,可以接受一个对象参数,其中包含要传递给 mutation 的数据。这样可以将异步操作和数据获取与 mutations 分离开来,使代码更具可维护性。

    示例:

    const store = new Vuex.Store({
      state: {
        count: 0
      },
      mutations: {
        increment(state) {
          state.count++
        }
      },
      actions: {
        asyncIncrement(context) {
          setTimeout(() => {
            context.commit('increment') // 触发 mutation 增加 count
          }, 1000)
        }
      }
    })
    
    // 在组件中触发 action
    store.dispatch('asyncIncrement') // 1 秒后增加 count
    
  2. Getters(获取器)

    • Getters 用于从 state 中派生出一些衍生状态或者进行一些计算。它们允许你在组件中获取并使用派生的状态,而不需要在组件内部重复相同的计算逻辑。

    • Getters 定义为一个函数,接受 state 作为参数,可以返回根据 state 计算得出的新状态。

    示例:

    const store = new Vuex.Store({
      state: {
        items: [
          { id: 1, name: 'Item 1', price: 10 },
          { id: 2, name: 'Item 2', price: 20 },
          { id: 3, name: 'Item 3', price: 30 }
        ]
      },
      getters: {
        totalPrice(state) {
          return state.items.reduce((total, item) => total + item.price, 0)
        }
      }
    })
    
    // 在组件中使用 getter
    const total = store.getters.totalPrice // 获取总价格,值为 60
    

    在上面的示例中,totalPrice 是一个 getter,它计算了所有商品的总价格。通过使用 getter,你可以在组件中轻松地获取这个派生的状态,而不必在每个组件中都重新计算。

总之,actions 用于处理异步操作和业务逻辑,而 getters 用于派生状态或进行计算,它们都有助于更好地组织和管理 Vuex 应用程序的状态。

vuex中的dispatch

dispatch 是 Vuex 中用于触发一个 action 的方法。action 是用于处理异步操作和业务逻辑的一种机制,它可以包含任何 JavaScript 代码,并且可以触发 mutation 来修改 state

使用 dispatch 方法可以在组件中触发一个 action,并传递一些参数给该 action。在 action 内部,你可以执行异步操作,例如发送网络请求、处理数据,然后在需要时触发相关的 mutation 来更新应用程序的状态。

示例:

import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

const store = new Vuex.Store({
  state: {
    count: 0,
  },
  mutations: {
    increment(state) {
      state.count++;
    },
  },
  actions: {
    asyncIncrement(context) {
      // 模拟异步操作,例如发送网络请求
      setTimeout(() => {
        context.commit('increment'); // 触发 mutation 增加 count
      }, 1000);
    },
  },
});

// 在组件中触发 action
store.dispatch('asyncIncrement'); // 1 秒后增加 count

在上面的示例中,我们创建了一个名为 asyncIncrementaction,它包含了一个异步的 setTimeout 操作。当调用 store.dispatch('asyncIncrement') 时,它会在一秒后触发 increment mutation 来增加 count。这样,我们就可以使用 dispatch 方法来触发异步操作,并在操作完成后更新应用程序的状态。

总之,dispatch 方法是用于触发 Vuex 中的 action 的工具,它允许你在组件中进行异步操作,并与应用程序的状态进行交互。这有助于更好地管理和组织 Vuex 应用程序中的业务逻辑。文章来源地址https://www.toymoban.com/news/detail-707871.html

到了这里,关于vue~vuex的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 浏览器的存储,cookie(httponly)、localStorage、sessionStorage、indexed对比

    浏览器提供了多种客户端存储机制,每种机制都有其特定的用途、特性和限制。以下是对 cookie 、 localStorage 、 sessionStorage 和 IndexedDB 的对比: 1. Cookie 存储大小 : 通常限制为4KB。 生命周期 : 可以设置过期时间。如果没有设置,它的生命周期将与会话持续相同,即关闭浏览器后

    2024年02月10日
    浏览(32)
  • 前端存储不要局限于cookies、Web Storage(sessionStorage、localStorage)还有它!

    前端本地化存储算是一个老生常谈的话题了,我们对于 cookies、Web Storage(sessionStorage、localStorage)的使用已经非常熟悉,这段时间公司提出了一个需求,业务员在移动端作业时需要有一个暂存功能,暂时存储填写的数据,我分析后数据量还比较大,前后查过各种资料。现在分

    2024年02月19日
    浏览(35)
  • Vue项目保持用户登录状态(localStorage + vuex 刷新页面后状态依然保持)

            在前端项目开发中,实现用户的登陆注册功能时常常会有一个问题,那就是我们设置的登录状态,在浏览器页面刷新后就消失了,这其实只是因为我们没有保存用户状态。 这里小马演示使用的是 localStorage   +   vuex 方法(其他诸如 sessionStorage、cookie 等用法相同,

    2023年04月08日
    浏览(31)
  • vue中vuex的五个属性和基本用法,另加js-cookie的使用

    VueX 是一个专门为 Vue.js 应用设计的状态管理构架,统一管理和维护各个vue组件的可变化状态(你可以理解成 vue 组件里的某些 data )。 state, getters, mutations, actions, modules。 1. state: vuex的基本数据,用来存储变量 2. geeter: 从基本数据(state)派生的数据,相当于state的计算属性 3.

    2024年02月14日
    浏览(30)
  • 【Vue】浏览器缓存sessionStorage、localStorage、Cookie

    目录 一、sessionStorage 1、简介 2、方法 3、代码示例 a、存取单个数据 b、存取对象 c、清除数据 二、localStorage 1、简介 2、方法 3、代码示例 三、cookie 1、简介 2、方法 3、代码示例 四、三者区别 1、sessionStorage与localStorage区别 2、sessionStorage、localStorage、cookie区别 五、往期相关优

    2024年02月07日
    浏览(27)
  • 原生JavaScript实现本地存储(localStorage)和会话存储(sessionStorage)

    目录 一、简单介绍 二、localStorage本地存储 三、sessionStorage会话存储 本地存储和会话存储的目的,是将所输入的文件存入到浏览器中,在需要的时候,直接调用,但是本地存储和会话存储有着一定的区别,本地存储,在不主动删除的情况下,会一直保留在浏览器中,会话存储是

    2023年04月08日
    浏览(32)
  • js-cookie的使用以及存储token安全的注意要点

    获取 设置 删除 1、我们最好在设置存储token的时候增加SameSite属性,SameSite属性可以设置为Strict、Lax或None。 Strict: cookie只会在同源请求中发送 Lax: cookie会在同源请求和顶级导航(比如链接点击)中发送 None: cookie会在所有请求中发送,但这需要Secure属性同时设置为true 2、使用CSRF T

    2024年02月04日
    浏览(31)
  • 前端存储使用localForage代替localStorage

    localForage是一个JavaScript库,能够类似localStorage的存储。 他是异步存储,可以优化你的web应用程序的离线体验,而且能存储多种类型的数据。 支持es6的 Promises API,而且支持添加回调函数。 安装成功后,即可在项目中使用,这里以vue为例: 与localStorage大致相同:https://developer.

    2024年02月16日
    浏览(40)
  • cookie、localStorage和sessionStorage详解

      目录 一、cookie 二、Web storage 1、localStorage 2、sessionStorage的使用  3、复杂数据类型储存 Web Storage带来的好处:  三、sessionStorage、localStorage和cookie的区别  cookie是客户端与服务器端进行会话使用的一个能够在浏览器本地化存储的技术。简言之,cookie是服务器端发给客户端的文

    2024年02月03日
    浏览(28)
  • cookie和localstorage在iframe中的应用

    背景: 现有项目中有一个用户中心系统,里面用iframe嵌入不同项目的页面,多个项目公用一个token 解决方案: 子页面通过url参数的方式传递token, 在url拿到token之后,刚开始将token存入localstorage中,但localstorage是永久保存,在浏览器关掉之后,再重新打开页面,只要token没有

    2024年02月08日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包