总所周知,vue是单向数据流,一般我们也不会在子组件里面修改父组件传进来的值,但总有需要修改的时候。

前段时间一个项目中有遇到上述情况,假设我直接传进来一个list, 当时我直接在里面改了list,但是却惊讶的发现没有报错,以前好像有遇到直接修改抛出错误的,但这次却没有,当时也没有多想,最近空闲下来又想了下,发现自己确实**了(此处省略两字^_^)。原因如下:

因为我传进来的list是个数组,属于引用类型,修改子组件相当于把父组件也同时修改了,所以没有报错,如果是个基本类型的数据直接修改那么vue会报错。

在子组件修改props的方法:

1. 子组件data中拷贝一份,注意引用类型需要深拷贝,根据需求可以watch监听

data() {return {newList: this.list.slice()}
},
watch: {list(newVal) {this.newList = newVal}
}

2.  通过计算属性修改

computed: {nList() {return this.list.filter(item => {return item.isChecked})}
}

3. 通过研究大佬们的写法又发现了一种修改方式: sync修饰符

父组件 穿进去的时候加上 .sync

子组件 通过this.$emit('update:xxx', params)

// 父组件
<todo-list :list.sync="list" />// 子组件
methodName(index) {this.$emit('update:list', this.newList)
}

vue中修改props传进来的值相关推荐

  1. 【vue】修改props传进来的值

    众所周知,vue是单向数据流,一般我们也不会在子组件里面修改父组件传进来的值,但总有需要修改的时候. 前段时间一个项目中有遇到上述情况,假设我直接传进来一个list, 当时我直接在里面改了list,但 ...

  2. vue子组件修改props传进来的值、回调函数

    vue修改props里面的值 1.传统方法,emit触发父组件修改父组件里面的值,间接的修改子组件的值 父组件 <Child :msg="msg" @handle=" ...

  3. vue修改props传过来的值报错Avoid mutating a prop directly since the value will be overwritten whenever the par

    在做项目时有时候会遇到这种错误 这句话的意思是说,避免直接改变道具,因为只要父组件重新渲染,该值就会被覆盖.相反,使用基于道具值的数据或计算属性. 就是不能直接改变父组件传过来的props,所以怎么办 ...

  4. vue 跳添加编辑页面传两个值_vue两个组件间值的传递或修改方式

    1.可以用公共的父组件来实现: 2.可以在store.js里面在设置公共变量: 3.也可以用本地存储localStorage.setItem()和localStorage.getItem(),通过修改 ...

  5. 如何利用自定义的事件,在子组件中修改父组件里边的值?

    如何利用自定义的事件,在子组件中修改父组件里边的值? 这是一篇好文章,佩服博主的思维:本文出自http://www.cnblogs.com/padding1015/ 关键点记住:三个事件名字 步骤如下 ...

  6. vue中的props对象

    vue中的props对象 1.props对象的定义 props其实是properties的缩写,props对象是用来定义属性的.props对象可以接受数组形式的参数又或者是对象形式的参数. 数组形式 ...

  7. vue中传值和传引用_vue prop属性传值与传引用示例

    vue prop属性传值与传引用示例 vue组件在prop里根据type决定传值还是传引用. 简要如下: 传值:String.Number.Boolean 传引用:Array.Object 若想将数组 ...

  8. vue项目下props传进去的数据,生命周期勾子函数包括watch不触发的解决办法

    vue项目下props传进去的数据,生命周期勾子函数包括watch不触发的解决办法 @TOC 遇到的问题 在深层props过程中,props的数据传到了目标文件 但却没有触发数据更新及页面更新: wa ...

  9. 在vue中修改浏览器图标和名字

    在vue中修改浏览器图标和名字 vue中,网页图标默认使用的是vue自带的一个icon的图标,也是vue的logo. 下面整理了几种改变标题和图标的方法 1.修改图标样式 01.使用图片 这个方法是可 ...

最新文章

  1. Last_Error: Relay log read failure: Could not parse relay log event entry.
  2. 在C++项目中引入Lua(AlphaGo使用的方案)
  3. 如何开启Dubbo框架内部的日志?
  4. 深度学习工具那么多,究竟哪款最适合你?| 线下沙龙 × 报名
  5. java image_Java 图片处理解决方案:ImageMagick 快速入门教程
  6. 行人属性数据集pa100k_基于InceptionV3的多数据集联合训练的行人外观属性识别方法与流程...
  7. XML学习(二)————属性还是标签?
  8. 前端跳转页面 添加request headers_前端需要了解的 CORS 知识
  9. BOOM!多模态遇上推荐系统
  10. kafka处理大数据包
  11. 体验引擎:游戏设计全景探秘
  12. Delphi中CoInitialize之探究
  13. EXCEL VBA入门(课堂随机点名系统)
  14. 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合
  15. linux删除文件名的文件夹,Linux删除文件夹和修改文件名
  16. http://trans.godict.com/index.php
  17. 【HDOJ 5654】 xiaoxin and his watermelon candy(离线+树状数组)
  18. 使用poi导出excel
  19. 面向高维稀疏数据场景,阿里妈妈宣布开源XDL深度学习框架
  20. 交通灯 单片机课程设计

热门文章

  1. 这款远程桌面软件开源了
  2. matlab绕圆柱有环量流线,绕圆柱无环量和有环量流动流线分布图
  3. Android kotlin自定义自动换行LinearLayout
  4. 利用真值表求命题公式A=(p→(q→r))↔︎(r→(q→p))的主析取范式和主合取范式.(10分)
  5. idm显示您正在使用一个假冒的序列号_IDM提示假序列号解决办法
  6. BDD - Specflow Bindings
  7. 记录一下自己常用的数据库,以备不时之需
  8. 计算机软件不是出租的主要标的时 著作人,计算机软件著作权免责声明中应包括哪些重要责任...
  9. el-form 验证规则里prop一次验证两个或多个值
  10. 花儿绽放斩获金梧奖金奖,智能营销赋能品牌增长