exercises.md 2.7 KB
Newer Older
Z
zhaoss 已提交
1 2
# VueX的安装与配置

Z
zhaoss 已提交
3
 <div style="color: pink;font-size:24px">小常识:</div>
Z
zhaoss 已提交
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
<br>

**安装**

```javascript
npm i vuex --save
```

**在src文件目录下新建store>index.js文件**

```javascript
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const store = new Vuex.Store();
 
export default store;
```

**入口文件里面引入store,然后再全局注入**

```javascript
import store from './store'//引入store
 
new Vue({
 el: '#app',
 router,
 store,//使用store
 template: '<App/>',
 components: { App }
})
```
**使用**
在state中定义数据

```javascript
Vue.use(Vuex)
const store = new Vuex.Store({
  state:{
    count:1
  }
})
```
Getter相当于vue中的computed计算属性,getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算,Getters 可以用于监听、state中的值的变化,返回计算后的结果

```javascript
 getters:{
    getCount:state=>{
      return state.count+1
    }
```

给action注册事件处理函数,当这个函数被触发时候,将状态提交到mutations中处理。actions里面自定义的函数接收一个context参数和要变化的形参

```javascript
actions:{
          addFun(context,n){
          context.commit('add',n)
       } 
       removeFun(context){
         context.commit("remove")
       }
    }
```
mutations是一个对象里。面的方法 都是同步事务,是更改state初始状态的唯一合法方法,具体的用法就是给里面的方法传入参数state或额外的参数

```javascript
  mutations:{
    addstaten){
    state.count = state.count+n
  },
  remove(){
    state.count=state.count-1
  }
  },
```
dispatch:含有异步操作,例如向后台提交数据,写法: this.$store.dispatch('action方法名',值)

commit:同步操作,写法:this.$store.commit('mutations方法名',值)

```javascript
export defult{
  data(){
    return{
      mag:'aaa'
    }
  },
    methods:{
      addCount(){
        this.$store.commit('add')
      },
        reoveCount:function(){
          this.$store.commit('remove')
        },
         addFun(){
            let n =2;
           this.$store.dispatch('addFun',n)
          },
            removeFun(){
               this.$store.dispatch('removeFun')
            }
    }
}
```

<br>

 <div style="color: pink;">小测试:</div >


根据上方资料,以下说法不正确的是?<br/><br/>

## 答案

创建 store 实例之前不需要引入vuex

## 选项

### A

安装完成之后需要创建一个新的 store 实例

### B

Unpkg.com 提供了基于 npm 的 CDN 链接,会一直指向 npm 上发布的最新版本

### C

可以使用 npm 对Vuex进行安装