Vuex是什么

一、组件之间共享数据的方式

父向子传值:v-bind 属性绑定

子向父传值:v-on 事件绑定

兄弟组件之间共享数据:EventBus

  • $on 接收数据的那个组件
  • $emit 发送数据的那个组件

二、Vuex是什么

Vuex是实现组件全局状态(数据)管理的一种机制,可以方便的实现组件之间数据的共享

总结:vuex是实现组件数据共享的

三、使用Vuex统一管理状态的好处

1.能够在vuex中集中管理共享的数据,易于开发和后期维护

2.能够高效地实现组件之间的数据共享,提高开发效率

3.存储在vuex中的数据都是响应式的,能够实时保持数据与页面的同步

问:什么样的数据适合存储到vuex中

一般情况下,只有组件之间共享的数据,才有必要存储到vuex中;

对于组件中的私有数据也就是不共享的数据,依旧存储在组件自身的data中即可

具体可以根据情况来决定,可以将数据全部存储到vuex中

四、方法

State:保存所有组件的共享状态

Getters:类似状态值的计算属性

Mutations:修改 State中状态值的唯一方法,里面包含状态变化监听器和记录器

Actions:用于异步处理 State中状态值,异步函数结束后调用Mutations

Modules:当一个 State 对象比较庞大时,可以将 State 分割成多个Modules 模块。

Vuex是一个状态管理模式,在Vue.js应用程序中使用。它可以集中管理Vue应用程序中的所有组件的状态,使得状态的共享和修改变得更加容易和可控。 Vuex有五个核心概念:state、getter、mutation、action和module。 - state:用于存储状态数据的对象。 - getter:类似于Vue组件中的计算属性,用于在状态发生变化时派生出新的状态。 - mutation:用于修改状态的方法,必须是同步的。 - action:用于提交mutation,可以是异步的。 - module:用于将状态分割成更小的模块,每个模块都拥有自己的state、getter、mutation和action。 使用Vuex的步骤如下: 1. 安装Vuex:在Vue.js项目中运行npm install vuex。 2. 创建store:在Vue.js项目中创建一个store.js文件,用于创建Vuex的store对象。 3. 定义state:在store.js文件中定义state对象,用于存储状态数据。 4. 定义mutation:在store.js文件中定义mutation方法,用于修改state中的数据。 5. 定义getter:在store.js文件中定义getter方法,用于派生出新的状态数据。 6. 定义action:在store.js文件中定义action方法,用于提交mutation。 7. 将store注入到Vue应用程序中:在Vue.js项目中的main.js文件中导入store并将其注入到Vue实例中。 8. 在组件中使用Vuex:在Vue.js组件中使用Vuex的state、getter、mutation和action方法。可以通过this.$store来访问store中的数据和方法。 示例代码: // store.js import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const store = new Vuex.Store({ state: { count: 0 }, mutations: { increment(state) { state.count++ } }, getters: { doubleCount(state) { return state.count * 2 } }, actions: { incrementAsync({commit}) { setTimeout(() => { commit('increment') }, 1000) } } }) export default store // main.js import Vue from 'vue' import App from './App.vue' import store from './store' new Vue({ store, render: h => h(App) }).$mount('#app') // App.vue <template> <div> <p>Count: {{ count }}</p> <p>Double Count: {{ doubleCount }}</p> <button @click="increment">Increment</button> <button @click="incrementAsync">Increment Async</button> </div> </template> <script> export default { computed: { count() { return this.$store.state.count }, doubleCount() { return this.$store.getters.doubleCount } }, methods: { increment() { this.$store.commit('increment') }, incrementAsync() { this.$store.dispatch('incrementAsync') } } } </script>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值