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

在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>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,167评论 0 29
  • Vue 实例 属性和方法 每个 Vue 实例都会代理其 data 对象里所有的属性:var data = { a:...
    云之外阅读 2,356评论 0 6
  • 下载安装搭建环境 可以选npm安装,或者简单下载一个开发版的vue.js文件 浏览器打开加载有vue的文档时,控制...
    冥冥2017阅读 6,192评论 0 42
  • 此文基于官方文档,里面部分例子有改动,加上了一些自己的理解 什么是组件? 组件(Component)是 Vue.j...
    陆志均阅读 3,942评论 5 14
  • 做产品经理这行也像说相声一样,也是需要门槛的,并不是人人都是产品经理,苏杰老师说的人人都是产品经理,而指的是人人都...
    榆木石头阅读 966评论 3 23

友情链接更多精彩内容