解决vue3报错:Unexpected mutation of “xxx“ prop.(eslintvue/no-mutating-props)

 更新时间:2023年12月15日 11:40:50   作者:jieyucx  
这篇文章主要给大家介绍了关于如何解决vue3报错:Unexpected mutation of “xxx“ prop.(eslintvue/no-mutating-props)的相关资料,文中通过代码将解决办法介绍的非常详细,需要的朋友可以参考下

eslint校验报这个错,其实是Vue的单向数据流的概念,因为识别到子组件中修改了props值。

我这里踩到这个坑是这么操作的,我在父组件中给子组件传了个值,然后再子组件中v-modle这个值,于是就给我报了这个错!

复现场景如下:

父组件中

<enter-school ref="enterSchoolRef" :student-info="selectRows" />

子组件中

<template>
    <el-form ref="formRef" class="enterForm" inline :model="form" :rules="rules" @submit.prevent>
      <el-input
          v-model="studentInfo[0].name"
          clearable
          placeholder="请输入姓名"
        />
     </el-form>
</template>
<script>
    props: {
      studentInfo: {
        type: Array, //类型
        default: null //默认值
      },
    },
</script>

报错就在v-model="studentInfo[0].name"不应该在子组件中直接双向绑定父组件传递过来的值

解决方案:

  • 计算属性 依赖该props进行计算/转换
<template>
 <el-input
      v-model="studentName"
      clearable
      placeholder="请输入姓名"
 />
</template>
<script>
    import { computed } from 'vue'
    props: {
      studentInfo: {
        type: Array, //类型
        default: null //默认值
      },
    }
    setup(props) {
      const studentName = computed(() =>
        props.studentInfo &&
        props.studentInfo.length > 0 ? props.studentInfo[0].name : null
      )
      return {
          studentName 
     }
    }
</scirpt>
  • 定义中间变量 在子组件内的定义一个变量,并将接收的props当作其初始值:
<template>
 <el-input
      v-model="studentName"
      clearable
      placeholder="请输入姓名"
 />
</template>
<script>
    import { computed, defineComponent, reactive, toRefs } from 'vue'
    props: {
      studentInfo: {
        type: Array, //类型
        default: null //默认值
      },
     }
    export default defineComponent({
    setup(props) {
      const state = reactive({
        studentName : props.studentInfo[0].name
      })
      return {
          ...toRefs(state),
     }
    }
   })
</scirpt>

我就是用的方案1,搞个计算属性解决了

总结

到此这篇关于解决vue3报错:Unexpected mutation of “xxx“ prop.(eslintvue/no-mutating-props)的文章就介绍到这了,更多相关Unexpected mutation of “xxx“ prop内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue2过滤器模糊查询方法

    vue2过滤器模糊查询方法

    今天小编就为大家分享一篇vue2过滤器模糊查询方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • 深入理解Vue父子组件生命周期执行顺序及钩子函数

    深入理解Vue父子组件生命周期执行顺序及钩子函数

    本文通过实例代码给大家介绍了Vue父子组件生命周期执行顺序及钩子函数的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-08-08
  • vue-cli项目使用mock数据的方法(借助express)

    vue-cli项目使用mock数据的方法(借助express)

    现如今前后端分离开发越来越普遍,前端人员写好页面后可以自己模拟一些数据进行代码测试,这样就不必等后端接口,提高了我们开发效率。今天就来分析下前端常用的mock数据的方式是如何实现的,需要的朋友可以参考下
    2019-04-04
  • Vue验证码60秒倒计时功能简单实例代码

    Vue验证码60秒倒计时功能简单实例代码

    这篇文章主要介绍了Vue验证码60秒倒计时功能简单实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06
  • vue3项目中使用three.js的操作步骤

    vue3项目中使用three.js的操作步骤

    最近在学习Three.js相关的技术,恰逢Vue 3.0正式版也已推出,下面这篇文章主要给大家介绍了关于vue3项目中使用three.js的操作步骤,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • Element Cascader 级联选择器的使用示例

    Element Cascader 级联选择器的使用示例

    这篇文章主要介绍了Element Cascader 级联选择器的使用示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • vue父子模板传值问题解决方法案例分析

    vue父子模板传值问题解决方法案例分析

    这篇文章主要介绍了vue父子模板传值问题解决方法,结合案例形式分析了vue.js父子模板传值问题相关实现方法与具体操作步骤,需要的朋友可以参考下
    2020-02-02
  • vuejs+element UI table表格中实现禁用部分复选框的方法

    vuejs+element UI table表格中实现禁用部分复选框的方法

    今天小编就为大家分享一篇vuejs+element UI table表格中实现禁用部分复选框的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • vue-devtools安装使用全过程

    vue-devtools安装使用全过程

    这篇文章主要介绍了vue-devtools安装使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • vue-router 4使用实例详解

    vue-router 4使用实例详解

    虽然 vue-router 4 大多数 API 保持不变,但是在 vue3 中以插件形式存在,所以在使用时有一定的变化。接下来就学习学习它是如何使用的
    2021-11-11

最新评论