【问题标题】:Vue 3 Composition API state not updating when use function [closed]Vue 3 Composition API 状态在使用函数时未更新[关闭]
【发布时间】:2022-01-26 08:43:38
【问题描述】:

我为此浪费了时间。我之前使用的是 Vue 3 选项 API,我正在尝试更改为 compostion API。我想将一个对象推送到数组,但 state 没有更新值,为什么会这样?

<script>
 
export default {
  setup() {
    const state = reactive([])

    function myFunction() {
        state.push({'item':1})
        console.log(state); // state change
    }

    watchEffect(() => {
        console.log(state) // state doesn't change
    })
        
    return {
      myFunction
    }
  }
}

</script>
<template>
  <button @click="myFunction()">Click Here</button>
</template>

【问题讨论】:

    标签: javascript vuejs3


    【解决方案1】:

    您的代码中有语法错误。函数声明应为function myFunction() { ... 而不是function myFunction {...

    在上网询问之前,请务必先检查浏览器控制台是否有任何错误...

    const app = Vue.createApp({
      setup() {
        const state = Vue.reactive([])
    
        function myFunction() {
          state.push({
            'item': 1
          })
          console.log(state); // state change
        }
    
        Vue.watchEffect(() => {
          console.log(state) // state doesn't change
        })
    
        return {
          myFunction
        }
      }
    })
    app.mount("#app")
    <script src="https://cdn.jsdelivr.net/npm/vue@3.2.26/dist/vue.global.min.js"></script>
    <div id="app">
      <button @click="myFunction()">Click Here</button>
    </div>

    【讨论】:

    • 对不起,我打错了。我已经更新了问题
    • @KhamadAli 这是不可重现的。查看(并运行)我的示例。它有效...
    • 但是当我访问函数外的状态时,它不会改变值
    • @KhamadAli 正如我所说 - 你所说的是不可重现。运行我的代码示例 - 它按预期工作
    猜你喜欢
    • 1970-01-01
    • 2021-08-25
    • 2021-11-25
    • 2020-06-16
    • 2023-02-10
    • 2021-01-10
    • 2021-06-22
    • 2023-01-10
    • 2021-02-09
    相关资源
    最近更新 更多