Vue.js 意外突变
P粉950128819
P粉950128819 2023-12-31 16:57:37
[Vue.js讨论组]

这是我的搜索组件,但它引发了“查询”道具错误的意外突变,我尝试了这种方式,但仍然收到错误。


    
    
    
    

这是视图字符,它使用组件搜索并传递查询数据



这些是我遇到的错误

错误“query”属性 vue/no-mutating-props 发生意外突变

错误“query”属性 vue/no-mutating-props 发生意外突变

非常感谢您的帮助

P粉950128819
P粉950128819

全部回复(2)
P粉517814372

您将input中的v-model设置为query.name,这意味着query当您更改输入值时,它将发生变化。由于 query 是一个 prop,因此您不能执行此操作。

P粉216203545

除了@Ian回答之外,要修复此警告,一种解决方案是使用get创建一个compulated属性,其值为query prop 和 set 带有 emit 事件到父组件,以更新父组件的查询 prop,并且在 html 中,您可以使用 计算的值而不是prop

<template>
      <div class="searchbar">
        <input
          type="text"
          v-model="compQuery.name" // this is the error
          class="input"
          placeholder="Search"
        />
    <div v-if="query.name.length > 3">
        <select v-model="compQuery.status" class="select"> // This is the error
          <option value="alive">Alive</option>
          <option value="dead">Dead</option>
          <option value="unknown">Unknown</option>
        </select>
    </div>
    
      </div>
    </template>
    
    <script>
    export default {
      props: {
            query: String
      },
      computed: {
        compQuery: {
          get () { return this.query },
          set (value) { this.$emit('update:query', value) },
        },
      },
    };
    </script>

并且在该组件的父组件中,您可以将 prop 传递为 v-model:prop="prop"

例如

<child v-model:query="query" />
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号