vista . js vuex
哎哎哎:# t0]https://www . geeksforgeeks . org/view-js-vuex/
Vuex 是一个针对 Vue 应用程序的状态管理库。它在整个应用程序中充当单一的真实来源,并将数据流集中到不同的组件。正如我们所知,对于具有许多组件的复杂应用程序来说,传递道具可能会很繁琐,Vuex 使这种交互非常无缝和可扩展。
先决条件:
-
您应该在系统中安装 npm。然后,您需要使用以下命令安装 vue-cli:
js npm install -g @vue/cli
-
然后使用以下命令创建一个新项目“gfg_vue2”(或您选择的任何名称):
js vue create gfg_vue2
选择默认安装设置。
项目结构:会是这样的。
将 Vuex 添加到您的应用程序
-
将 Vuex 添加到 Vue 中。JS 项目您可以通过 CDN 链接来完成,也可以通过在项目目录的终端中运行以下命令来添加:
js npm install vuex –save
-
然后使用将它导入到所需的 JS 文件中
js import Vuex from 'vuex'
Vuex: Vuex 有 3 个基本功能部件:
- 状态:Vuex 存储中的状态对象是存储我们的应用程序组件的数据的地方。通过导入 Vuex 存储,然后在方法内部使用“store.state.storedVariable”,可以将它们访问到单个组件中。
- 突变:状态变量可以在任何地方被访问,但是改变它们的唯一方法是通过提交突变。突变有一个字符串类型和一个处理程序,处理程序是在我们执行实际状态修改的存储中定义的。
- 动作:动作类似于突变,只是它们实际上实施了突变。这看起来可能是多余的,因为突变也可以完成这个任务,但这是有原因的——突变是同步操作,因为它涉及状态变量的改变,而动作可以执行异步操作
语法
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
// Define state variables as properties here
},
mutations: {
// Mutation handlers (pass state object)
},
actions: {
// Actions (pass context object)
}
})
示例:我们将使用与我们在事件总线和$emit/props ( 在此为)解释中使用的示例相同的示例。
每个 Vuex 应用程序的核心都是一个商店。它是保存应用程序状态的容器。它们是反应性的,只能通过提交突变来改变,从而防止任何组件隐式改变状态。
Store.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
n: 0
},
mutations: {
change_n(state) {
state.n++
},
},
actions: {
change_n(context) {
context.commit('change_n')
}
}
})
App.js
<template>
<div>
<Component1></Component1>
<Component2></Component2>
</div>
</template>
<script>
import Component1 from './components/Component1.vue'
import Component2 from './components/Component2.vue'
export default {
name: 'App',
components: {
Component1,Component2
}
}
</script>
<style>
</style>
组件 1 .视图
<template>
<div class="component1">
<h1>You have clicked {{ labeltext }} times</h1>
</div>
</template>
<script>
//Importing store
import store from '../store';
export default {
name: "Component1",
computed: {
labeltext () {
//Accessing the store's state
return store.state.n
}
}
};
</script>
<style scoped>
.component1 {
display: block;
background-color: green;
height: 15em;
text-align: center;
color: white;
padding-top: 5em;
}
</style>
组件 2 .视图
<template>
<div class="component2">
<button @click="count">Click</button>
</div>
</template>
<script>
//Importing store
import store from '../store';
export default {
name: "Component2",
methods: {
count() {
//Triggering Actions with the store.dispatch method
store.dispatch('change_n')
},
},
};
</script>
<style scoped>
.component2 {
display: block;
background-color: grey;
height: 15em;
text-align: center;
padding-top: 5em;
}
</style>
输出:
版权属于:月萌API www.moonapi.com,转载请注明出处