欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

state

程序员文章站 2024-03-13 16:22:21
...

最简单的调用

const vuex=new Vuex.Store({
            state:{
                count:0
            },
            mutations:{
                add(state){
                    state.count++
                }
            }
        })
        // console.log(vuex)
        // 其实也就是相当于创建了一个对象,然后所有改变数据的方法都是在mutation里面来触发,数据只能通过这个里面的方法来改变

        console.log(vuex.state)
        vuex.commit('add')
        vuex.commit('add')
        console.log(vuex.state)

1 .为什么输出的时候,两个console都是显示最后的数据,难道有优先执行的权限吗。但是第一个console也不是异步函数啊,为什么有异步执行的迹象
2 .实际引入的时候,就是把这个里面的state变为vue里面的data,getter的时候就是把state直接变成这个组件的data就可以了吧
3 .但是vue里面的data都是必须先定义的,那么就证明之前有一个地方一定还是全局定义了,然后在这个里面只是引入了一下,不知道对不对,
4 .看了下后面的使用方法看,发现其实都是在comoputed里面返回了,相当于组件里面显示的数据都是computed计算属性返回的数据,这样就避免了需要在全局一个看不见的地方注册一下全局的data
5 .以后学习新的代码还是要使用原生的api来开发,这样可以理解作者的思想
6 .但是实际的使用,每个都需要引入很麻烦,所以还是使用Vue.use()方法,提供了一种机制将状态从根组件注入到每一个子组件中
7 .子组件可以通过this.$store访问到

其他概念

1 .vuex的状态存储是响应式的,当Vue组件从store中读取状态的时候,若store中的状态发生变化,那么相应的组件也会相应得到更新。
2 .mutation提交数据的方式,可以让我们更明确的追踪到状态的变化,这个可以让每次提交的意图更加明显,此外可以实现一些能记录每次状态,
3 .mapState辅助函数

1 .当映射的计算属性的名称于state的子节点名称相同的时候,可以直接传入一个字符串数组来获得值
2 ....mapState(
            ['searchResult','isLoading']
        ),
3 .映射this.isLoading为store.state.isLoading