You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue中判断data内author等于'Gel'的console.log逻辑失效求助

解决Vue中data值变化时未触发console.log的问题

嘿,我来帮你排查下为啥你的if语句没生效~ 先拆解下你的代码逻辑:你在mounted钩子中调用了shiiit()方法,但此时author的初始值是空字符串'',所以条件this.author === 'Gel'不成立,自然不会打印haha。而当你通过下拉框选择Gel时,author的值确实会更新,但这个时候你没有重新触发shiiit()方法,所以代码根本没机会再次判断条件。

给你几个可行的解决思路:

1. 用Vue的watch监听author的变化(推荐方案)

这是Vue响应式系统的最佳实践,自动监听author的变化,一旦值变成Gel就执行打印操作:

data(){
  return {
    author: '',
    authors: ['Gel','shit']
  }
},
mounted(){
  // 初始化时如果需要检查,可以在这里调用一次
  this.checkAuthor()
},
methods: {
  checkAuthor(){
    if(this.author === 'Gel'){
      // eslint-disable-next-line no-console
      console.log('haha')
    }
  }
},
watch: {
  author(newVal){
    this.checkAuthor()
    // 或者直接把逻辑写在这里:
    // if(newVal === 'Gel') console.log('haha')
  }
}

2. 给下拉框绑定change事件

每次用户选择下拉选项时,手动触发检查方法:

修改模板部分:

<select v-model="author" @change="checkAuthor">
  <option v-for="author in authors" :key="author">
    {{ author }}
  </option>
</select>

然后在methods中保留你的检查方法(可以改名更语义化):

methods: {
  checkAuthor(){
    if(this.author === 'Gel'){
      // eslint-disable-next-line no-console
      console.log('haha')
    }
  }
}

另外注意你的v-for里的key:因为authors是字符串数组,直接用author作为key就可以,不用author.id(数组元素是字符串,没有id属性)。

3. 初始化时设置默认值(可选)

如果希望页面加载时,若author初始值是Gel就触发打印,可以把data里的author设为'Gel',然后在mounted里调用检查方法:

data(){
  return {
    author: 'Gel', // 默认设为Gel
    authors: ['Gel','shit']
  }
}

这样就能满足你的需求啦,推荐用第一种watch的方式,更符合Vue的响应式设计思想~

内容的提问来源于stack exchange,提问作者aravinvafshe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 09:22:45