美文网首页Vue.js专区
Vue.js 2 修改父组件Prop的问题

Vue.js 2 修改父组件Prop的问题

作者: 陈凯利 | 来源:发表于2016-12-07 12:41 被阅读785次

在vue 2中,子组件的Component是不能随意的对父组件的Prop进行修改的。

// Parent.vue
<template>
  <child :test="test"></child>
</tempalte>
<script>
import Child from './child'
module.exports = {
  components: {Child},
  data: function () {
    return {
        test: 'some string'
    }
  }
}
</script>

// Child.vue
<template>
    <div> {{ test }} </div>
</tempalte>
<script>
import Child from './child'
module.exports = {
  props: ['test'],
  mounted: function () {
    this.test = 'other string'    // Vue warning!! 会提醒不要修改父组件的Component!!
  }
}
</script>

这样的限制真的很不方便啊,经常把变量传到子组件。
官方给出的方法是使用事件响应机制进行修改,但是这样十分的绕。

折腾几天,发现一个曲线的解决办法:传递对象,需要进行修改的变量属于对象内的一个实例变量:

// Parent.vue
<template>
  <child :test="test"></child>
</tempalte>
<script>
import Child from './child'
module.exports = {
  components: {Child},
  data: function () {
    return {
        test: {
          _: 'some string'
        }
    }
  }
}
</script>

// Child.vue
<template>
    <div> {{ test._ }} </div>
</tempalte>
<script>
import Child from './child'
module.exports = {
  props: ['test'],
  mounted: function () {
    this.test._ = 'other string'    // OK.可以对传递过来的对象进行修改
  }
}
</script>

相关文章

  • Vue.js 2 修改父组件Prop的问题

    在vue 2中,子组件的Component是不能随意的对父组件的Prop进行修改的。 如 这样的限制真的很不方便啊...

  • Vue prop 控制台经常报Prop值的warn原因

    问题: 将父组件的传的值,子组件将其修改。出现警告问题。 解决办法: 将父组件传的prop,使用 JSON.Par...

  • vue子组件如何修改父组件data里的值

    子组件修改父组件的值的时候报错Avoid mutating a prop directly since the v...

  • vue .sync 修饰符

    .sync 修饰符作用: 让子组件可以更加优雅的修改父组件的data单向数据流所有的prop都是其父子prop之间...

  • vue prop

    问题描述在vue项目中,父组件通过prop给子组件传值时,如果prop值是从服务器端获取,则父组件可能会传给子组件...

  • vue父子组件交互

    一、父组件向子组件传值 通过 Prop 向子组件传递数据 父组件 子组件接收 单向数据流:父级 prop 的更新会...

  • vue 组件通信

    本文主要解决vue组件之间的通信问题 Prop 向下传递,事件向上传递 Prop (主要用于父组件向子组件下发数据...

  • 【Vue.js】 如何灵活地使用超甜语法糖:v-model

    众所周知,Vue.js是单向数据流不建议子组件直接修改父组件的数据,官方理由是:子组件修改父组件的值会让你的数据流...

  • Vue.js组件二之prop

    一、父组件向子组件传递数据使用prop prop是子组件接收父组件传递过来信息的的一个自定义属性,因为父组件的数据...

  • Vue .sync修饰符与$emit(update:xxx)

    .sync修饰符的作用在对一个 prop 进行“双向绑定,单向修改”的场景下,因为子组件不能直接修改父组件,syn...

网友评论

    本文标题:Vue.js 2 修改父组件Prop的问题

    本文链接:https://www.haomeiwen.com/subject/ymedmttx.html