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 相关文章推荐
JavaScript去除空格的三种方法(正则/传参函数/trim)
Feb 06 Javascript
Jquery ajax基础教程
Nov 20 Javascript
AngularJS基础 ng-csp 指令详解
Aug 01 Javascript
JS实现六位字符密码输入器功能
Aug 19 Javascript
ES6通过babel转码使用webpack使用import关键字
Dec 13 Javascript
angularjs+bootstrap菜单的使用示例代码
Mar 07 Javascript
JS实现直接运行html代码的方法
Mar 13 Javascript
详解前端路由实现与react-router使用姿势
Aug 07 Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
Feb 04 Javascript
JQueryDOM之样式操作
Mar 27 jQuery
一文搞懂ES6中的Map和Set
May 20 Javascript
详解node登录接口之密码错误限制次数(含代码)
Oct 25 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
Yii2框架实现利用mpdf创建pdf文件功能示例
2019/02/08 PHP
javascript indexOf函数使用说明
2008/07/03 Javascript
jQuery(1.6.3) 中css方法对浮动的实现缺陷分析
2011/09/09 Javascript
Node.js生成HttpStatusCode辅助类发布到npm
2013/04/09 Javascript
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
jQuery实现简单的间隔向上滚动效果
2015/03/09 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
javascript中使用正则表达式清理table样式的代码
2020/04/01 Javascript
使用CamanJS在Web页面上处理图像的技巧
2015/08/18 Javascript
Nodejs如何复制文件
2016/03/09 NodeJs
jQuery的ajax下载blob文件
2016/07/21 Javascript
js select实现省市区联动选择
2020/04/17 Javascript
函数四种调用模式以及其中的this指向
2017/01/16 Javascript
解决jquery appaend元素中id绑定事件失效的问题
2017/09/12 jQuery
vue2.0+ 从插件开发到npm发布的示例代码
2018/04/28 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
2018/08/24 Javascript
webpack4打包vue前端多页面项目
2018/09/17 Javascript
通过JavaScript下载文件到本地的方法(单文件)
2019/03/17 Javascript
微信小程序npm引入vant-weapp的踩坑记录
2019/08/01 Javascript
vue+element tabs选项卡分页效果
2020/06/29 Javascript
js blob类型url的视频下载问题的解决
2019/11/29 Javascript
Nodejs + Websocket 指定发送及群聊的实现
2020/01/09 NodeJs
详解为什么Vue中不要用index作为key(diff算法)
2020/04/04 Javascript
[01:35:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第一场 1月18日
2021/03/11 DOTA
Python字符转换
2008/09/06 Python
Python中if __name__ == &quot;__main__&quot;详细解释
2014/10/21 Python
如何通过雪花算法用Python实现一个简单的发号器
2019/07/03 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
2019/07/09 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
python中把元组转换为namedtuple方法
2020/12/09 Python
css3的transition效果和transfor效果示例介绍
2013/10/30 HTML / CSS
英国航空官网:British Airways
2016/09/11 全球购物
新入职员工的自我介绍演讲稿
2014/01/02 职场文书
税务干部群众路线教育实践活动自我剖析材料
2014/09/21 职场文书
绿里奇迹观后感
2015/06/15 职场文书
最新最全的手机号验证正则表达式
2022/02/24 Javascript