一、vue/no-mutating-props

       "vue/no-mutating-props"是一个ESLint规则,用于在Vue.js的单文件组件中禁止对props进行直接修改。这个规则的原因是为了确保props是只读的,以避免副作用和不可预知的行为。

       如果在代码中违反了这个规则,ESLint会给出警告或错误消息。例如,在一个组件中,如果试图修改props的值,ESLint会报错,提示不要直接修改props的值。

二、引起vue/no-mutating-props问题的原因分析

       组件props获得的参数是只读的,故对模板中对props获得的值进行双向绑定时,即可能引发vue/no-mutating-props错误,如这样一个vue组件:

<template>
    <div class="main">      
      <div v-model="msg"></div>
    </div>  
</template>
<script>
export default {
    props: ['msg']
  }
</script>

msg为组件调用时传入的值,对该值的v-model绑定就可能引发vue/no-mutating-props问题, 

<div v-model="msg"></div> 中msg会提示错误

三、解决思路和途径

1、组件的data属性可读可写,使用data属性的数据与模板进行双向绑定则不会出现vue/no-mutating-props问题。

2、在data属性中定义变量,接收props中传入的参数,再用data属性中的变量与模板部分进行绑定,即可规避和解决vue/no-mutating-props问题。

<template>
    <div class="main">      
      <div v-model="value"></div>
    </div>  
</template>
<script>
export default {
    props: ['msg'],
    data() {
    return {
      value:this.msg
    };
  }
</script>

 四、小结

 1、vue项目中的组件,实现模板与数据的双向绑定时,数据最好来自组件的data属性。

 2、接收外部参数的组件,在data属性中定义变量,接收props中的传入的值后,在利用data属性中的变量与模板实现数据的双向绑定是一个极好的习惯。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐