vue父组件数据更新,子组件未更新

本文讲述了在Vue应用中,当父组件的数据更新时,子组件视图未及时响应的问题,通过在子组件中使用watch进行数据监听来确保同步更新。通过实例演示了如何设置watch并配合props传递数据,确保组件间的有效通信。
摘要由CSDN通过智能技术生成

父组件中数据更新了,但子组件中数据并为更新响应视图的变化

解决:在子组件中加入 watch 进行数据监听

父组件

<RiskLevel :level="level" @getVal="getRiskVal"></RiskLevel>

...
getRiskVal(val) {
  this.newRuleInfo.risk_level = val
}
...

子组件

<template>
  <el-select v-model="localLevel" placeholder="请选择"@change="change">
    <el-option v-for="item in levelList" :key="item.value" :label="item.name" :value="item.value"></el-option>
  </el-select>
</template>

<script>
export default {
  props: {
    level: {
      type: Number
    }
  },
  data() {
    return {
      levelList: [
        {
          name: '0',
          value: 0
        },
        {
          name: '1',
          value: 1
        },
        {
          name: '2',
          value: 2
        },
        {
          name: '3',
          value: 3
        },
        {
          name: '4',
          value: 4
        }
      ],
      localLevel: this.level
    }
  },
  watch: { // watch 监听 props 中的值
    level(newVal, oldVal) { // newVal 为新值, oldVal 为旧值
      this.localLevel = newVal
    }
  },
  mounted() {
    this.localLevel = this.level
  },
  methods: {
    change(val) {
      this.$emit('getVal', val)
    }
  }
}
</script>

补充

vue 中的自定义组件 v-model

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值