vue props 单项数据流实例分享


Posted in Javascript onFebruary 16, 2020

vue props 单项数据流实例分享

父组件传递动态值showStoreList,子组件通过props接收,但是如果在子组件中直接使用并修改这个值会报错;

因为父级的更新会传递给子组件,但是反过来则不行;

这种情况下,可以使用computed或watch来获取props中的值

vue props 单项数据流实例分享

以上实例不难,下面由三水点靠木小编整理的补充内容:

Vue2.x通过props传递数据是单向的了,也就是父组件数据变化时会传递给子组件,但是反过来不行。

业务中会经常遇到两种需要改变prop的情况,

一种是父组件传递初始值进来,子组件将它作为初始值保存起来,在自己的作用域下可以随意使用和修改。这种情况可以在组件data内再声明一个数据,引用父组件的prop,示例代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <script src="./vue.js"></script>
</head>
<body>
  <div id="app">
    <my-component :init-count="1"></my-component>
  </div>
  <script>
    Vue.component('my-component',{
      props:['init-count'],
      template:'<div>{{count}}</div>',
      data:function(){
        return {
          count:this.initCount
        }
      }
    })
    new Vue({
      el:'#app',
    })
  </script>
</body>
</html>

组件中声明了数据count,它在组件初始化时会获取来自父组件的initCount,之后就与之无关了,只用维护count,这样就可以避免直接操作initCount。

另一种情况就是prop作为需要被转变的原始值传入。这种情况用计算属性就可以了,示例如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <script src="./vue.js"></script>
</head>
<body>
  <div id="app">
    <mynew-component :width="100"></mynew-component>
  </div>
  <script>
    Vue.component('mynew-component',{
      props:['width'],
      template:'<div :style="style">组件内容</div>',
      computed:{
        style:function(){
          return {
            width:this.width+'px',
            background:'lightgray',
            textAlign:'center'
          }
        }
      }
    })
    new Vue({
      el:'#app',
    })
  </script>
</body>
</html>

注意:

在JavaScript中对象和数组是引用类型,指向同一个内存空间,所以props是对象和数组时,在子组件内改变是会影响父组件的。

//如此解决引用传递

1:var newObject = jQuery.extend(true, {}, oldObject);

2:var obj={};

obj=JSON.parse(JSON.stringify(oldObject));

以上就是本次介绍地全部相关知识点,感谢大家的学习和对三水点靠木的支持。

Javascript 相关文章推荐
基于jquery的一个简单的脚本验证插件
Apr 05 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
Dec 08 Javascript
jQuery知识点整理
Jan 30 Javascript
JavaScript 不支持 indexof 该如何解决
Mar 30 Javascript
jquery if条件语句的写法
May 19 Javascript
JavaScript中点击事件的写法
Jun 28 Javascript
JS跨域交互(jQuery+php)之jsonp使用心得
Jul 01 Javascript
JavaScript与ActionScript3两者的同性与差异性
Sep 22 Javascript
获取jqGrid中选择的行的数据
Nov 30 Javascript
JS中事件冒泡和事件捕获介绍
Dec 13 Javascript
页面间固定参数,通过cookie传值的实现方法
May 31 Javascript
vue axios post发送复杂对象问题
Jun 04 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
Feb 16 #Javascript
vue中axios防止多次触发终止多次请求的示例代码(防抖)
Feb 16 #Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
Feb 16 #Javascript
封装一下vue中的axios示例代码详解
Feb 16 #Javascript
Vue.js的模板语法详解
Feb 16 #Javascript
Vue两个版本的区别和使用方法(更深层次了解)
Feb 16 #Javascript
vue数据响应式原理知识点总结
Feb 16 #Javascript
You might like
全国FM电台频率大全 - 24 贵州省
2020/03/11 无线电
建立文件交换功能的脚本(二)
2006/10/09 PHP
三种php连接access数据库方法
2013/11/11 PHP
php计算数组相同值出现次数的代码(array_count_values)
2015/01/20 PHP
判断是否输入完毕再激活提交按钮
2006/06/26 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
js友好的时间返回函数
2016/08/24 Javascript
Bootstrap 模态框(Modal)插件代码解析
2016/12/21 Javascript
jQuery实现页面滚动时智能浮动定位
2017/01/08 Javascript
如何实现一个webpack模块解析器
2018/10/24 Javascript
浅析Vue.js 中的条件渲染指令
2018/11/19 Javascript
微信小程序冒泡事件及其阻止方法实例分析
2018/12/06 Javascript
JavaScript栈和队列相关操作与实现方法详解
2018/12/07 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
2019/01/18 Javascript
vue axios封装及API统一管理的方法
2019/04/18 Javascript
vue随机验证码组件的封装实现
2020/02/19 Javascript
Python脚本实现自动发带图的微博
2016/04/27 Python
让python 3支持mysqldb的解决方法
2017/02/14 Python
Python 实现子类获取父类的类成员方法
2019/01/11 Python
html5 canvas-2.用canvas制作一个猜字母的小游戏
2013/01/07 HTML / CSS
奇怪的鱼:Weird Fish
2018/03/18 全球购物
不忘国耻振兴中华演讲稿
2014/05/14 职场文书
节能标语大全
2014/06/21 职场文书
小学生志愿者活动方案
2014/08/23 职场文书
竞选大队干部演讲稿
2014/09/11 职场文书
个人查摆剖析材料
2014/10/16 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
发布会邀请函
2015/01/31 职场文书
中小企业员工手册范本
2015/05/14 职场文书
走进毛泽东观后感
2015/06/04 职场文书
紫日观后感
2015/06/05 职场文书
呐喊读书笔记
2015/06/30 职场文书
2015年学校管理工作总结
2015/07/20 职场文书
优秀新员工事迹材料
2019/05/13 职场文书
使用Redis实现点赞取消点赞的详细代码
2022/03/20 Redis
Python3使用Qt5来实现简易的五子棋小游戏
2022/05/02 Python