Prop being mutated: "counter"

对于父子组件之间的互相传值,报错如下:

[Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop’s value. Prop being mutated: “counter”

大概意思是:避免直接更改一个PROP,因为每当父组件重新呈现时,该值就会被覆盖。

解决办法:

不要直接引用父组件传过来的值,可以把接收到的父组件的值赋值给一个新的参数

父组件

<template>
  <div class="wrap">
      <Temp :counter="counte" :max="10" :min="0" @reduceInner="reduceWrap" @addInner = 'addWrap'></Temp>
   </div>
 </template>
<script>
import Temp from '../components/temp'
import TempA from '../components/tempA'
export default {
  name: 'practice',
  components: { Temp, TempA },
  data () {
    return {
      counte: 5
    }
  },
  methods: {
    reduceWrap(val) {
      this.counte = val
    },
    addWrap(val) {
      this.counte = val
    }

  }
}
</script>

子组件

<template>
  <div class="wrapInner">
    <el-row>
      <el-col :span="12"><el-input v-model="cum" :max="max" :min="min"></el-input></el-col>
      <el-col :span="3"><el-button @click="reduce">-</el-button></el-col>
      <el-col :span="3"><el-button @click="add">+</el-button></el-col>
    </el-row>
  </div>
</template>

<script>
export default {
  name: 'temp',
  props: {
    counter: {
      type: Number
    },
    max: {
      type: Number
    },
    min: {
      type: Number
    }
  },
  data: function () {
    return {
      cum: this.counter
    };
  },
  computed: {

  },
  methods: {
    reduce() {
      this.cum--;
      this.$emit('reduceInner', this.cum)
    },
    add () {
      this.cum++;
      this.$emit('addInner', this.cum)
    }
  }
};
</script>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
位置变异 我不太理解你的意思。你可以再解释一下吗? 我不明白你的意思。 很高兴为您服务!placement是指将物体放置在某个位置上,这可以通过突变来实现。 对“placement”的变异来说,它的意义是把某些元素放置在特定的位置。 很高兴为您提供帮助。“placement”一般指把某事物放置在特定的位置。 我不明白你的意思。 我不太明白你的意思,你能再解释一下吗? 我不太清楚什么是"placement",但我知道“prop being mutated”是指属性被突变。 我不知道你在说什么。 我们可以用“放置”来描述这一变化过程。 我不太明白您的意思,请再说明一下您的问题? 我不太清楚你的意思,你能再说一遍吗? 把“placement”转化为变体的话,可以说是“安置”或“放置”。 我们可以把"placement"变成一种新的技术或者技能。 你想问的是什么? 我不太明白你的意思。 我不太明白你的意思。你能再说明白一点吗? 位置。 我想你是在询问“安置”的意思? 我不太明白你的意思。 我不太明白你的意思。 我不知道你在说什么,你可以请你再详细解释一下吗? 你想说的是放置? 我不太清楚你所指的“placement”,可以再详细解释一下吗? 我不太了解"placement"是什么意思。你能解释一下吗? 位置。 你是在询问放置的意思吗? 这个词的意思是放置、放置位置或安置。 放置。 我不太明白你的意思。你能再说明白一点吗? 位置。 我不太明白你的意思。这个错误信息通常是在编程中使用了不可变对象或常量,试图更改它们的属性或值导致的。在这种情况下,错误信息指出尝试更改名为“placement”的属性,但该属性被视为不可变对象。 解决此问题的方法可能因编程语言而异,但通常的解决方法是使用可变对象或数据结构,或者通过更改代码逻辑来避免更改不可变对象的属性。需要进一步查看代码和上下文才能提供更具体的建议。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值