Vue2-Vue.observable( object )

178 阅读1分钟

Vue.observable( object ) - 2.6.0+

1# 定义

语法Vue.observable( data: object )

Vue.observable 让一个对象可响应。Vue 内部会用它来处理 data 函数返回的对象。

返回的对象可以直接用于 渲染函数计算属性 内,并且会在发生变更时触发相应的更新。此外,也可以作为最小化的跨组件状态存储器,用于简单的场景:

const state = Vue.observable({ count: 0 });
new Vue({
  render: function (h) {
    return h(
      "button",
      { on: { click: () => { state.count++; } } },
      `count is: ${state.count}`
    );
  },
}).$mount("#app");

2# 示例

在这个示例中,使用 Vue.observable 创建了一个包含 count 属性的响应式对象 state。然后在 Vue 实例中定义了一个计算属性 doubleCount 来计算 count 的两倍值,并在渲染函数中直接使用 state.countdoubleCount 计算属性。

const state = Vue.observable({
  count: 0
});

new Vue({
  // case 1. 计算属性内
  computed: {
    doubleCount() {
      return state.count * 2;
    },
  },
  // case 2. 渲染函数内
  render(h) {
    return h('div', [
      h('p', 'count is: ' + state.count),
      h('p', 'double count is: ' + this.doubleCount),
      h('button', {
        on: {
          click: () => { state.count++; }
        }
      }, 'Increment')
    ])
  },
}).$mount("#app");