布尔数据在 vue 3 中的 vue 反应性中似乎表现得很奇怪

aul*_*lah 2 javascript runtime-error vue.js vue-reactivity vuejs3

我正在尝试更改数据类型为'boolean'的变量。当页面首次加载时,数据运行良好。但是,当页面重新加载时,该变量会在方法中本地更新,而不是在全局数据部分中更新。因此,在控制台中,我不断收到错误“未捕获(承诺中)TypeError:无法读取 invokeDirectiveHook 处未定义的属性“值””

有什么我错过的吗?

<template>
  <p>Value: {{ val }}</p>
  <button @click="changeMe">Click Me</button>
</template>

<script>
import { ref } from 'vue';

export default {
  data() {
    return {
      val: ref(false);
    },
  },
  methods: {
    changeMe() {
      this.val = !this.val;
    }
  }
}
</script>
Run Code Online (Sandbox Code Playgroud)

wit*_*ein 5

请不要将选项 API组合 API混合使用

选项 API

Vue.createApp({
  data() {
    return {
      val: false
    }
  },
  methods: {
    changeMe() {
      this.val = !this.val
    }
  }
}).mount('#demo')
Run Code Online (Sandbox Code Playgroud)
<script src="https://unpkg.com/vue@next"></script>

<div id="demo" class="demo">
  <p>Value: {{ val }}</p>
  <button @click="changeMe">Click Me</button>
</div>
Run Code Online (Sandbox Code Playgroud)

合成API

const { createApp, ref } = Vue;
const app = createApp({
  setup() {
    let val = ref(false)
    
    function changeMe() {
      val.value = !val.value
    }

    return {
      val,
      changeMe
    }
  }
});
app.mount("#app");
Run Code Online (Sandbox Code Playgroud)
<script src="https://unpkg.com/vue@next"></script>
<div id="app">
   <p>Value: {{ val }}</p>
  <button @click="changeMe">Click Me</button>
</div>
Run Code Online (Sandbox Code Playgroud)

组合 API(简短)

// Composition API
<template>
  <p>Value: {{ val }}</p>
  <button @click="changeMe">Click Me</button>
</template>

<script setup>
import { ref } from 'vue'

const val = ref(false)

function changeMe() {
 val.value = !val.value
}
</script>
Run Code Online (Sandbox Code Playgroud)

<script setup>现在包含在3.2版本中