【问题标题】:Vue 3 composition api computed property = template not updatedVue 3 组合 api 计算属性 = 模板未更新
【发布时间】:2021-09-06 12:22:54
【问题描述】:

我有一个计算属性,但它不工作

我可以看到currentMode随着console.log的变化

但我的模板没有更新

模板: <div v-if="editMode"></div>

设置:

setup(props, context) {

let currentMode = null
const modes = {
   view:'view',
   edit:'edit',
   create:'create'
}
const editMode = computed(() => {
   return currentMode === modes.edit
});

const toggleMode = () => {
  if (currentMode === modes.edit ){
    currentMode = modes.view
    console.log(currentMode)
    return
  }  else {
    currentMode = modes.edit
    console.log(currentMode)
  }
}

return {editMode, toggleMode}

【问题讨论】:

    标签: javascript vue.js vuejs3


    【解决方案1】:

    尝试让模式反应

    let currentMode = ref(null)
    const modes = ref({
      view:'view',
      edit:'edit',
      create:'create'
    })
    const editMode = computed(() => {
      return currentMode.value === modes.value.edit
    });
    
    const toggleMode = () => {
      if (currentMode.value === modes.value.edit ){
        currentMode.value = modes.value.view
        console.log(currentMode.value)
        return
      }  else {
        currentMode.value = modes.value.edit
        console.log(currentMode.value)
      }
    }
    

    【讨论】:

    • 我做到了,抱歉我用括号弄错了
    • 我像建议的那样添加了参考,但也没有运气
    • 加上ref() 我的toggleMode 功能不再起作用
    • 它在currentMode.value = modes.value.edit 失败,表示试图分配给只读属性
    • 感谢您的仔细检查,是的,我已经让
    猜你喜欢
    • 2019-10-03
    • 2020-11-02
    • 2021-07-11
    • 1970-01-01
    • 2020-12-22
    • 2018-03-05
    • 2021-05-04
    • 1970-01-01
    • 2020-12-16
    相关资源
    最近更新 更多