uniapp 子组件 props拿不到数据_来吧!一文彻底搞定Vue组件!

点击蓝色 “达达前端小酒馆” 关注我哦!

加个 “星标” ,每天一篇文章,一起学编程

13335da925a6195e068a9b4de8ca5e2b.png

作者 |  Jeskson

来源 |  达达前端小酒馆

Vue组件的概述

组件是什么呢,了解组件对象的分析,Vue组件中的data属性,props传递数据的原理到底是什么。

事件通信的那些事

如何了解父子组件事件通信,和遇到非父子组件事件通信如何处理。

组件类型又是什么鬼

自定义组件双向绑定v-model,动态组件,又是如何称为动态的,为啥是动态呢,递归组件,如何理解递归。

Vue组件的了解

Vue的理解,可以找我上一篇vue.js-详解三大流行框架VUE_快速进阶前端大咖-Vue基础,组件是什么,组件就是自己写好的一部分封装好的功能,自己写的叫组件,别人写的叫插件,组件的运用,是vue.js强大的功能之一,组件的出现是为了提高代码的可重用性,组件是一部分完整好的,如果要使用,你可以放到你自己任何的项目上去,减少代码的重复书写。

直接在你要用的地方引入即可,是不是减少了重复性开发,可以把组件的代码按照template,style,script的拆分形式,放到对应的文件中。

template是什么?它是模板(template),模板是声明了数据和最终展现给用户的dom之间的映射关系,初始化数据data是什么?一个组件的初始数据状态,对于可以重复使用的组件来说,通常是私有的状态,方法methods是对数据进行操作的方法,接收外部参数,组件之间通过参数来进行数据的传递和共享props,参数默认是单向绑定,也可以双向绑定。

回调函数,一个组件可以触发多个回调函数,created(),attached(),destroyed()。

Vue组件,全局注册与局部注册

全局注册文件,Vue.component('组件名', {组件参数})方式创建

    // 创建全局组件 Vue.component('my-component",{ // template: 组件的HTML代码结构 template: '
this is dada
'});// Vue实例对象var vm = new Vue({ el: '#app'});

局部注册组件,不是每个组件都是需要进行全局注册的,也可以直接在vue实例对象的构造函数中,使用compontent关键字进行注册自定义的组件。

<div id="app"> <local-component>local-component>div><script src="https://unpkg.com/vue">script><script>// Vue实例UI小var vm = new Vue({ el: '#app', // 创建局部组件 components: {  'my-components': {   template: '
this is my
'   }  } }});

首先先创建局部组件对象,然后注册Vue构造器中注册局部组件对象,最后使用局部组件。

"app"> // 在默认情况,使用camel标记法将ui自动转换为短横线形式 local-component>div> // 自定义组件 const my = Vue.component('my-component", {  template: '#my' }); // vue实例对象 var vm = new Vue({  el: '#app' });// 会出现程序错误因为vue组件只允许有一个根元素。组件template属性中包含div与P两个元素
<template id="my"> // 组件只允许有一个根元素 
 
da
  

da

 
template>// 成功

vue组件中的data属性

在组件中,可以使用任何有效的Vue实例对象属性。data属性是Vue组件可用的响应式数据,它是Vue实例的数据对象。在创建实例后,用户可以通过vm.$data访问原始数据对象Vue实例也代理了data的所有属性。

即vm.a 等价于 vm.$data.a,以"_"或者是"$"开头的属性不会被Vue实例代理,因为它们可能和Vue内置的属性以及api方法产生冲突。

// 创建一个实例var vm = new Vue({ data: data})vm.a // => 1vm.$data === data // => true// Vue.extend()中的datavar Component = Vue.extend({ data: function() {  return { a: 1 } }})

data属性必须声明为返回一个初始数据对象的函数。

"app">

my-component

my

<template id="my">
  
this is my
  

this is da

  

{{message}}

  "message = 'update message'">  修改  
template> var data={ message: 'global' } // 全局组件 const my = Vue.component('my-component', {  template: '#my',  // data属性表示当前组件使用的数据信息  // data属性必须是回调函数形式,在回调函数中要返回对象  data: function() {   return data;  }}); // Vue实例对象 var vm = new Vue({  el: '#app' });
// 全局组件const my = Vue.component('my-component',{ template: '#my', // data属性表示当前组件使用额数据信息 // data属性必须是回调函数形式,在回调函数中要返回对象 // data属性应该返回一个都有的对象 data: function() {  return {   message: 'component-message'  }; }});

props传递数据

父组件和子组件之间的通信使用props,是组件数据中的一个字段,子组件使用props来获取父组件的数据,props可以是字面量语法,动态语法,绑定修饰符等。

props字面量,子组件通过props声明待接收的父组件数据,父组件中使用子组件,通过HTML属性为子组件传递数据。

子组件:

const my = { // props:声明接收父组件数据 props: ['message'], // data一样 template: '{{message}}'}

父组件:

<my-component message="message from parent by props"><my-component>
const my = { props: ['myMessage']; template: '{{message}}'}"hello">
子组件props指明数据Vue.component("my-component",{ props: ['message'], template: '{{message}}'});<my-component >

动态语法:

id="app"> "message">  "message"> 

v-bind指令将HTML属性绑定到一个表达式上,使用v-bind指令将动态props绑定到父组件的数据。

var vm = new Vue({ el: '#app', data: {  user: {   name: 'test',   age: '12'  } }});

绑定修饰符

父组件的属性发生变化时,会传递给子组件

// 默认单向绑定"parentMessage">// 双向绑定"parentMessage">// 单向绑定"parentMessage">
// 在子组件中修改props都会影响父组件的状态
"example"> <input type="text" v-model="info.name"/> <child v-bind:msg.once = "info">child>div>const dada = new Vue();// 创建组件const child1Component={ template: '#child1', methods: {  updaeChild2: function(){   // 使用事件总线触发自定义事件   dada.$emit('child1-event','update name from child1');  } }};const child2Component = { template: '#child2', props: ['message'], data: function() {  return {  name: 'child2'  }; }, created: function() { // 保留当前vue组件对象 const app = this; // 监听事件总线触发的事件 bus.$on('child1-event', function(param){  console.log('捕获');  app.name = param; });}};

❤️ 不要忘记留下你学习的脚印 [点赞 + 收藏 + 评论]

作者Info:

> 【作者】:Jeskson

> 【原创公众号】:达达前端小酒馆。

> 【福利】:公众号回复 “资料” 送自学资料大礼包(进群分享,想要啥就说哈,看我有没有)!

> 【转载说明】:转载请说明出处,谢谢合作!~

大前端开发,定位前端开发技术栈博客,PHP后台知识点,web全栈技术领域,数据结构与算法、网络原理等通俗易懂的呈现给小伙伴。谢谢支持,承蒙厚爱!!!

感谢阅读,原创不易,喜欢就点个[在看] or [转发朋友圈],这是我写作最大的动力。

意见反馈

若本号内容有做得不到位的地方(比如:涉及版权或其他问题),请及时联系我们进行整改即可,会在第一时间进行处理。

这是一个有质量,有态度的公众号

f36158a105e483bc4f0136b89edf19a6.png

点关注,有好运

小编写作不易

在看和转发走起来

81a2e8405e54ff715aa2b8a25d1279b7.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349579.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

csp-s模拟测试41「夜莺与玫瑰·玫瑰花精·影子」

夜莺与玫瑰 题解 联赛$T1$莫比乌斯$\%\%\%$ $dead$ $line$是直线 首先横竖就是$nm$这比较显然 枚举方向向量 首先我们枚举方向向量时只枚举右下方向,显然贡献$*2$就是所有斜着的直线 $i,j$表示当自己向右$i$个单位长度,向下$j$单位长度 我们相同斜率下只算最短的线贡献,(因为其…

春天重试,因为冬天来了

好的&#xff0c;这实际上与冬天无关&#xff0c;众所周知&#xff0c;冬天已经到了 。 它是关于Spring Retry的&#xff0c;Spring是一个小的Spring框架库&#xff0c;它使我们可以将重试功能添加到应可重试的任何任务中。 这里有一个很好的教程 &#xff0c;解释了如何设置简…

python做些什么项目_Python 的练手项目有哪些值得推荐

1 Web方向的练手项目 这个其实是肯定不用多少的了。Python的练手项目就是可以做一个网站了。我们可以做一个属于自己的博客。在做博客的时候&#xff0c;我们可以巩固的知识点是 HtmlCSSJS的基础知识&#xff0c;以及熟练的运用Python的Web开发框架&#xff08;例如Django或者F…

删除某个时间段之前的文件

/* * 删除文件夹下$n分钟前创建的文件 * param $dir 要处理的目录&#xff0c;物理路径&#xff0c;结尾不加\ * param $n 过期时间&#xff0c;单位为分钟 * return void */function z_del_file_by_ctime($dir,$n){ if(is_dir($dir)){ if($dhopendir($dir)){ …

技术管理规划-路径跟资源

背景 评估团队的投入和产出或者给上级做汇报&#xff0c;都需要弄清楚需要投入多少资源&#xff0c;而资源主要跟两个因素息息相关&#xff0c;即团队目标&#xff0c;此外还有路径和手段&#xff1b; 增加人力前的三个问题&#xff1f; 1.资源的丰富性&#xff1f; 人&#xf…

python保存代码_python入门(5)使用文件编辑器编写代码并保存执行

原博文 2017-04-21 17:21 − python入门&#xff08;5&#xff09;使用文件编辑器编写代码并保存执行 两款文本编辑器&#xff1a; 一个是Sublime Text&#xff0c;免费使用&#xff0c;但是不付费会弹出提示框&#xff1a; 一个是Notepad&#xff0c;免费使用&#xff0c;有中…

lucene索引搜索_Lucene –快速添加索引和搜索功能

lucene索引搜索什么是Lucene&#xff1f; Apache LuceneTM是完全用Java编写的高性能&#xff0c;功能齐全的文本搜索引擎库。 它是一项适用于几乎所有需要全文本搜索的应用程序的技术&#xff0c;尤其是跨平台。 Lucene可以纯文本&#xff0c;整数&#xff0c;索引PDF&#xf…

从graphql endpoint获取schema文件

graphql server端有更新&#xff0c;client端需要重新获取schema文件用于创建新的api request&#xff0c;下面简要记录如何从graphql endpoint获取schema文件 You can simply install the CLI using npm or yarn by running the following command. This will add the graphql…

pythonclass全局变量_python的局部变量,全局变量,类变量,实例变量

定义&#xff1a; a、全局变量&#xff1a;在模块内、在所有函数外面、在class外面&#xff0c;这就是全局变量。 b、局部变量&#xff1a;在函数内、在class的方法内&#xff08;未加self修饰的&#xff09;&#xff0c;这就是局部变量。 c、 静态变量&#xff1a;在class内的…

使用JUnit 5测试异常

JUnit 5带来了令人敬畏的改进&#xff0c;它与以前的版本有很大的不同。 JUnit 5在运行时需要Java 8&#xff0c;因此Lambda表达式可以在测试中使用&#xff0c;尤其是在断言中。 这些断言之一非常适合测试异常。 设置项目 为了演示JUnit 5的用法&#xff0c;我使用了我的长期…

pytorch list转tensor_点赞收藏:PyTorch常用代码段整理合集

机器之心转载来源&#xff1a;知乎作者&#xff1a;张皓众所周知&#xff0c;程序猿在写代码时通常会在网上搜索大量资料&#xff0c;其中大部分是代码段。然而&#xff0c;这项工作常常令人心累身疲&#xff0c;耗费大量时间。所以&#xff0c;今天小编转载了知乎上的一篇文章…

csp-s模拟测试42「世界线·时间机器·密码」

$t3$不会 世界线 题解 题目让求的就是每个点能到点的数量$-$出度 设每个点能到的点为$f[x]$ 则$f[x]x \sum\limits_{y}^{y\in son[x]} U f[y]$ 用$bitset$优化一下即可,但单纯这样会炸内存,随意$yy$一下,时间换空间,像平衡树一样开个垃圾桶都行 代码 #include<bits/stdc.h&g…

python中的命名空间_深入理解Python中的命名空间和范围

Python中的命名空间和范围 在Python中&#xff0c;每个包、模块、类、函数和方法函数都拥有一个“名称空间”&#xff0c;其中解析了变量名称。下面本篇文章就来带大家认识一下Python中的命名空间和范围&#xff0c;希望对大家有所帮助。什么是命名空间&#xff1a; 命名空间是…

ubuntu16.04安装MATLAB R2017b步骤详解(附完整破解文件包)

https://blog.csdn.net/qq_32892383/article/details/79670871 转载于:https://www.cnblogs.com/BambooEatPanda/p/11523727.html

lisp将图元追加选择_汕尾幸运儿喜爱大乐透 两次买彩票就擒获8注追加二等奖254万元...

6月26日&#xff0c;中国体育彩票大乐透第19073期开奖&#xff0c;前区开出号码04﹑11﹑19﹑20﹑24&#xff0c;后区开出号码08﹑11。当期送出头奖2注&#xff0c;二等奖176注&#xff0c;其中汕尾一位幸运儿陈先生(化名)擒得追加二等奖8注&#xff0c;喜获奖金2541434元。两次…

什么是JAX-RS注释? (第3部分)

JAX-RS注释概述&#xff08;第3部分&#xff09; 这是一个由三部分组成的系列&#xff0c;介绍了用于实现REST端点的注释。 在JAX-RS批注的第二部分中&#xff0c;您了解了&#xff1a; Path注释和PathParam QueryParamter批注 Produces批注 Consumes批注 在这一部分中&a…

csp-c模拟测试43「A·B·C」

B 题解 $f[i][(gcd(prime[j]*prime[k]\%P,P))]\sum\limits_{k1}^{k<num} f[i-1][k]*phi(\frac{P}{prime[j]})$ 关于$phi(\frac{P}{prime[j]})$理解 $phi(\frac{P}{prime[j]})$是求$prime[j]$代表的数的个数 $Pk_0*prime[j]$ $x_1k_1*prime[j]$ $x_2k_2*prime[j]$ ....... 要…

小甲鱼python全部视频_小甲鱼全套教程之Python系列视频教程

Python 当前位置&#xff1a;主页 > 编程教程 > Python > 小甲鱼全套教程之Python系列视频教程 小甲鱼全套教程之Python系列视频教程 教程大小&#xff1a; 发布时间&#xff1a;2015-04-18   下载次数&#xff1a;次 本套小甲鱼全套教程之Python系列视频教程是比较…

如何有效开展小组教学_高效课堂 有效教学 | 教育部专家到徐州市第三中学开展教研活动...

原标题&#xff1a;高效课堂 有效教学 | 教育部专家到徐州市第三中学开展教研活动前言2020年12月1日&#xff0c;教育部基础教育课程教材发展中心徐州调研暨徐州市2020年高中语文教师“深度学习”研讨活动、徐州市2020年高中化学骨干教师“三新”培训在徐州市第三中学举办。参加…

技术管理角色认知-管理都需要做哪些事

背景 即管理的具体形式&#xff0c;关于what的问题&#xff1f;管理到底要做哪些事情&#xff1f; 派别定义说明过程管理是5个要素组成的一种普遍的人类活动&#xff0c;这5个要素是&#xff1a;计划&#xff0c;组织&#xff0c;指挥&#xff0c;协调&#xff0c;控制亨利法约…