当前位置: 首页 > 编程笔记 >

Vue.js 什么是Vuex?

淳于星宇
2023-03-14
本文向大家介绍Vue.js 什么是Vuex?,包括了Vue.js 什么是Vuex?的使用技巧和注意事项,需要的朋友参考一下

示例

Vuex是一个官方插件Vue.js,可为您的应用程序提供一个集中的数据存储库供您使用。它受Flux应用程序体系结构的严重影响,该体系结构具有单向数据流,从而简化了应用程序设计和推理。

在Vuex应用程序中,数据存储区保留所有共享的应用程序状态。通过响应于通过调度程序调用突变事件的动作而执行的突变,可以更改此状态。

下图概述了Vuex应用程序中的数据流示例。根据MIT许可使用的图表,该图表最初来自Vuex官方GitHub存储库。

各个Vue.js应用程序组件可以通过getter访问存储对象以检索数据,getter是纯函数,返回所需数据的只读副本。

组件可以具有动作,这些动作是对组件自己的数据副本进行更改的功能,然后使用分派器分派变异事件。然后由数据存储处理此事件,该数据存储将根据需要更新状态。

由于所有组件都通过其吸气剂反应性地绑定到商店,因此更改会自动反映到整个应用程序中。

一个示例,说明在vue项目中使用vuex。

const state = {
    lastClickTime: null
}

const mutations = {
    updateLastClickTime: (state, payload) => {
     state.lastClickTime= payload
  }
}

const getters = {
  getLastClickTime: state => {
    return new Date(state.lastClickTime)
  }
}

const actions = {
    syncUpdateTime: ({ commit }, payload) => {
    commit("updateLastClickTime", payload)
  },
  asyncUpdateTime: ({ commit }, payload) => {
    setTimeout(() => {
      commit("updateLastClickTime", payload)
    }, Math.random() * 5000)
  }
}

const store = new Vuex.Store({
  state,
  getters,
  mutations,
  actions
})

const { mapActions, mapGetters } = Vuex;

// Vue 
const vm = new Vue({
    el: '#container',
  store,
  computed: {
      ...mapGetters([
        'getLastClickTime'
    ])
  },
  methods: {
      ...mapActions([
        'syncUpdateTime',
      'asyncUpdateTime'
    ]),
    updateTimeSyncTest () {
        this.syncUpdateTime(Date.now())
    },
    updateTimeAsyncTest () {
        this.asyncUpdateTime(Date.now())
    }
  }
})

与HTML模板相同:

<div id="container">
  <p>{{ getLastClickTime || "No time selected yet" }}</p>
  <button @click="updateTimeSyncTest">Sync Action test</button>
  <button @click="updateTimeAsyncTest">Async Action test</button>
</div>

  1. 这里的状态包含初始化为null的lastClickTime属性。设置默认值对于使属性保持反应性很重要。状态中未提及的属性将可用,但此后所做的更改将无法使用getter进行访问

  2. 使用的getter提供了一个计算的属性,每次突变更新state属性的值时都会更新该属性。

  3. 允许突变更改状态及其属性,也就是说,它只能同步进行

  4. 可以在异步更新的情况下使用Action,在异步更新中,可以在该操作中进行API调用(在此由随机定时的setTimeout模拟),并且在获得响应后可以将其更改为突变,以更改状态。

 类似资料:
  • v-model除了用在表单上还有哪些应用场景? 在el-drawer组件上使用了v-model,为什么这个组件需要v-model呢?它也不涉及表单,直接传一个ref不可以吗?

  • 公司要进行攻防演练,领导让我把老项目的node包升级下,经过一番思索发现vue打包后就跟node没什么关系了,node只是开发人员在本地运行代码所需的一个环境。告诉领导后,领导说打包用的是node14的语法,node14现在不维护了,那在这些语法里会不会有一些漏洞?我是觉得应该是没有的吧!但又不好没有依据的直接回。 所以,问下各位大佬这个会有漏洞吗?

  • 问题内容: 什么是selenium? 当您打开Selenium的官方页面时,您首先读到的是“什么是Selenium?”中的“ Selenium automates browser”。部分。“selenium的哪个部分适合我?”部分 下面提供了Selenium WebDriver和Selenium IDE之间的选择。由此,我推断出Selenium是一组工具,并且该集合包括IDE,WebDriver

  • 硒是什么? 当你打开Selenium的官方页面,首先看到的是“什么是Selenium”中的“Selenium自动浏览器”。节。“硒的哪一部分对我合适?”下面提供了Selenium WebDriver和Selenium IDE之间的选择。由此,我推断Selenium是一个工具集合,该集合包括IDE、WebDriver API(语言绑定)、网格、Selenium独立服务器、浏览器驱动程序。一个人必须下

  • 开发的时候没问题,但是部署到Linux系统后使用vue和地图,然后正常直接打开地图的话没问题,但是弹窗就显示不出来地图一片空白

  • 本文向大家介绍什么是事务?什么是锁?相关面试题,主要包含被问及什么是事务?什么是锁?时的应答技巧和注意事项,需要的朋友参考一下 答:事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔