• vuex学习


    创建store对象的简单方法

    const store = new Vuex.Store({
      state: {
        count: 0
      },
      mutations: {
        increment (state) {
          state.count++
        }
      }
    })

    可以通过 store.state 来获取状态对象,以及通过 store.commit 方法触发状态变更。通过提交 mutation 的方式,而非直接改变 store.state.count,是因为我们想要更明确地追踪到状态的变化。

    Vuex 通过 store 选项,提供了一种机制将状态从根组件“注入”到每一个子组件中(需调用 Vue.use(Vuex)): 

    const app = new Vue({
      el: '#app',
      // 把 store 对象提供给 “store” 选项,这可以把 store 的实例注入所有的子组件
      store,
      components: { Counter },
      })

    通过在根实例中注册 store 选项,该 store 实例会注入到根组件下的所有子组件中,且子组件能通过 this.$store 访问到store对象。

    使用 Vuex 并不意味着需要将所有的状态放入 Vuex。虽然将所有的状态放到 Vuex 会使状态变化更显式和易调试,但也会使代码变得冗长和不直观。如果有些状态严格属于单个组件,最好还是作为组件的局部状态。你应该根据你的应用开发需要进行权衡和确定。

    Getter

    Vuex 允许我们在 store 中定义“getter”(可以认为是 store 的计算属性)。就像计算属性一样,getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。getter函数接受state作为参数。

    Mutation

    更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。Vuex 中的 mutation 非常类似于事件:每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。这个回调函数就是我们实际进行状态更改的地方,并且它会接受 state 作为第一个参数。要唤醒一个 mutation handler,需要以相应的 type 调用 store.commit 方法:

    使用常量替代 mutation 事件类型在各种 Flux 实现中是很常见的模式。这样可以使 linter 之类的工具发挥作用,同时把这些常量放在单独的文件中可以让你的代码合作者对整个 app 包含的 mutation 一目了然。

    一条重要的原则就是要记住 mutation 必须是同步函数

     Action

    Action 类似于 mutation,不同在于: 

    1、Action 提交的是 mutation,而不是直接变更状态。

    2、Action 可以包含任意异步操作。

    Action 函数接受一个与 store 实例具有相同方法和属性的 context 对象,因此你可以调用 context.commit 提交一个 mutation,或者通过 context.state 和 context.getters 来获取 state 和 getters。

    在组件中使用 this.$store.dispatch('xxx') 分发 action

  • 相关阅读:
    C# 多线程和异步 (转发)
    WCF —— Endpoint & Binding & netTcpBinding Overview(转发)
    http 请求 —— 连接数问题 & httpclient 重用
    WCF ChannelFactory and channels caching, reusing, closing and recovery
    WCF ——从绑定元素认识系统预定义绑定 转载 & NetTcpBinding & 信道工厂(Channel Factory)(转发)
    在C#中利用KeepAlive处理Socket网络异常断开的方法
    WCF _ example
    What happens when I close/abort a WCF channel/proxy?
    WCF —— Consuming WCF Services in .NET Core – Best Practices(转发)
    Python shapely
  • 原文地址:https://www.cnblogs.com/happypayne/p/7593965.html
Copyright © 2020-2023  润新知