父组件传递动态值showStoreList,子组件通过道具接收,但是如果在子组件中直接使用并修改这个值会报错;
因为父级的更新会传递给子组件,但是反过来则不行;
这种情况下,可以使用计算或手表来获取道具中的值
以上实例不难、下面由小编整理的补充内容:
Vue2.x通过道具传递数据是单向的了,也就是父组件数据变化时会传递给子组件,但是反过来不行。
业务中会经常遇到两种需要改变道具的情况,
一种是父组件传递初始值进来,子组件将它作为初始值保存起来,在自己的作用域下可以随意使用和修改。这种情况可以在组内件数据再声明一个数据,引用父组件的道具,示例代码如下:
& lt; !DOCTYPE html> & lt; html lang=癳n”比; & lt; head> & lt;元charset=皍tf - 8”比; & lt;元name=笆哟啊蹦谌?翱矶?设备宽度,初始=1.0”比; & lt;元http-equiv=癤-UA-Compatible”内容=癷e=边缘”比; & lt; title> Document & lt;脚本src=" https://www.yisu.com/zixun/vue.js "祝辞& lt;/script> & lt;/head> & lt; body> & lt; div id=坝τ谩北? & lt;组件:init-count=" 1 "祝辞& lt;/my-component> & lt;/div> & lt; script> Vue.component(“组件”,{ 道具:[' init-count '), 模板:“& lt; div>{{数}}& lt;/div>”, 数据:函数(){ 返回{ 数:this.initCount } } }) 新Vue ({ 埃尔:“#应用”, }) & lt;/script> & lt;/body> & lt;/html>
组件中声明了数据统计,它在组件初始化时会获取来自父组件的initCount,之后就与之无关了,只用维护计数,这样就可以避免直接操作initCount。
另一种情况就是支撑作为需要被转变的原始值传入。这种情况用计算属性就可以了,示例如下:
& lt; !DOCTYPE html> & lt; html lang=癳n”比; & lt; head> & lt;元charset=皍tf - 8”比; & lt;元name=笆哟啊蹦谌?翱矶?设备宽度,初始=1.0”比; & lt;元http-equiv=癤-UA-Compatible”内容=癷e=边缘”比; & lt; title> Document & lt;脚本src=" https://www.yisu.com/zixun/vue.js "祝辞& lt;/script> & lt;/head> & lt; body> & lt; div id=坝τ谩北? & lt; mynew-component:宽度=" 100 "祝辞& lt;/mynew-component> & lt;/div> & lt; script> Vue.component (mynew-component, { 道具:“宽度”, 模板:“& lt; div:在组件内容& lt;/div>”, 计算:{ 风格:函数(){ 返回{ 宽度:上+“px”, 背景:浅灰色, textAlign:“中心” } } } }) 新Vue ({ 埃尔:“#应用”, }) & lt;/script> & lt;/body> & lt;/html>
注意:
在JavaScript中对象和数组是引用类型,指向同一个内存空间,所以道具是对象和数组时,在子组件内改变是会影响父组件的。
//如此解决引用传递
1: var newObject=jQuery。扩展(真的,{},oldObject);
2: var obj={};
obj=JSON.parse (JSON.stringify (oldObject));
以上就是本次介绍地全部相关知识点,感谢大家的学习和对的支持。