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 validator 插件增加日期比较方法
Feb 21 Javascript
Jquery中删除元素的实现代码
Dec 29 Javascript
Extjs中RowExpander控件的默认展开问题示例探讨
Jan 24 Javascript
利用jquery实现瀑布流3种案例
Sep 18 Javascript
javascript九宫格图片随机打乱位置的实现方法
Mar 15 Javascript
js前端导出Excel的方法
Nov 01 Javascript
全新打包工具parcel零配置vue开发脚手架
Jan 11 Javascript
用原生JS实现爱奇艺首页导航栏代码实例
Sep 19 Javascript
详解小程序BackgroundAudioManager踩坑之旅
Dec 08 Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
May 06 Javascript
js实现ajax的用户简单登入功能
Jun 18 Javascript
OpenLayers3实现对地图的基本操作
Sep 28 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
php下实现农历日历的代码
2007/03/07 PHP
PHP字符串的编码问题的详细介绍
2013/04/27 PHP
php模拟用户自动在qq空间发表文章的方法
2015/01/07 PHP
php数组生成html下拉列表的方法
2015/07/20 PHP
PHP7.0安装笔记整理
2015/08/28 PHP
php基于dom实现读取图书xml格式数据的方法
2017/02/03 PHP
jquery可见性过滤选择器使用示例
2013/06/24 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
2014/09/03 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
2015/07/08 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
Angular2之二级路由详解
2018/08/31 Javascript
基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能
2019/04/02 Javascript
es6中比较有用的7个技巧小结
2019/07/12 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
Vuejs通过拖动改变元素宽度实现自适应
2020/09/02 Javascript
[02:02]DOTA2英雄基础教程 斯拉达
2013/12/11 DOTA
python插入数据到列表的方法
2015/04/30 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
2015/08/23 Python
Python实现的寻找前5个默尼森数算法示例
2018/03/25 Python
Python双向循环链表实现方法分析
2018/07/30 Python
python 读取Linux服务器上的文件方法
2018/12/27 Python
通过PYTHON来实现图像分割详解
2019/06/26 Python
基于keras输出中间层结果的2种实现方式
2020/01/24 Python
python 线程的五个状态
2020/09/22 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
html5小程序飞入购物车(抛物线绘制运动轨迹点)
2020/10/19 HTML / CSS
美国婚戒购物网站:Anjays Designs
2017/06/28 全球购物
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
Nike意大利官网:Nike.com IT
2020/01/19 全球购物
Collection和Collections的区别
2016/05/02 面试题
介绍一下HDLC(High-Level Data Link Control)高层数据链路协议
2012/01/21 面试题
代理词怎么写
2015/05/25 职场文书
党小组意见范文
2015/06/08 职场文书
2016大学生暑期社会实践心得体会
2016/01/14 职场文书