013状态管理VueX

大型应用往往跨越多个组件。通过多层嵌套传递参数十分复杂,并且Vue没有兄弟组件之间直接共享参数的方法。

https://vuex.vuejs.org/zh/guide/
VueX是专为Vue.js开发的状态管理库。集中式存储管理所有组件的状态
简单地说,VueX管理分散在Vue中的各组件的数据
npm install vuex@next (下载最新的)

vue2–vuex3
vue3–vuex4

一般大项目才用
每个Vuex的核心都是一个store,与普通的全局对象不同的是,Vue数据和视图绑定,数据改变,绑定的视图也会被重新渲染。
store中的状态不允许直接修改,只能通过提交(commit)mutation这可以让我们跟踪状态的变化

Vuex:
State,Getter,Mutation(改变、转变),Action,Module状态管理
State
可以使用this.$store.state.count访问数据源
也可以用mapstate辅助函数将其映射下来
修改state就要通过我们定义的方法去修改
mutation只能做一下同步操作,action可以异步操作
不太懂。。。

安装VUEX@3失败可能是因为证书过期了
https://blog.csdn.net/qq_42761482/article/details/121018086

通过commit修改store内容

<template>
  <div class="hello" >
    {{ this.$store.state.count }}
    <button @click="add">+1</button>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  methods:{
    add(){
      this.$store.commit("increment")
      //this.$store.state.count = this.$store.state.count + 1
    }
  }
}
</script>

还可以通过compute获取动态数据

<template>
  <div class="hello" >
    <!-- {{ this.$store.state.count }} -->
    {{ count }}
    <button @click="add">+1</button>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  computed: {
    count(){
      return this.$store.state.count
    }
  },
  methods:{
    add(){
      this.$store.commit("increment")
      //this.$store.state.count = this.$store.state.count + 1
    }
  }
}
</script>

也可以通过mapstate取数据,看不懂。。可以去看官网?
computed:mapState([
‘count’
])

可能需要了解filter函数

getters:{
        doneTodos:state => {
            return state.todos.filter(todo => todo.done)
        }
    }

Helloworld也可以这么写,是映射,调用index里面写的getters

export default {
  name: 'HelloWorld',
  computed:{
    ...mapState([
      'count','todos'
    ]),
    ...mapGetters([
      'doneTodos'
    ])
  },
  
  methods:{
    add(){
      this.$store.commit("increment")
      //this.$store.state.count = this.$store.state.count + 1
    }
  }
}
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值