vue.js初学之组件props

vue中组件的props属性(详) 今天这篇文章,让你彻底学会props属性…… props主要用于组件的传值,他的工作就是为了接收外面传过来的数据,与data、el、ref是一个级别的配置项。 阅读详情

上一篇讲述了公司——办公室——员工的神奇组合,那么现在就要开始来说说,他们中间是怎么发布任务的。vue里面就提供了一个好东西,叫props,这一篇里面,我会把在props里面踩的坑都写出来。说起props,其实就是父组件和子组件传递信息的工具,用我的话讲就是,办公室的老大给员工说,“我要给你什么任务一样”

prop用法


上面就是一个具体的用法,但这种传值的方式,只是传入一个字符串。同样的我们也可以用v-bind:message='hello'来传字符串,当然具体的prop怎么传值,可以看官网prop ,推荐用v-bind来对prop传值,动态静态都能玩。

prop的单向数据流

来说说这个强大的坑了,在这之前,我们先来说几个在使用prop进行数据传输的时候,要注意的点:

  1. 父子组件数据传输是单向的,只能由父组件传给子组件,子组件无法直接传给父组件(很好理解,办公室的老大可以给你下命令,你敢给你的老大下命令吗,要是可以,那不就乱套了,这也是vue为了不混乱而设定的)
  2. 子组件无法更改props中的值(老板下的命令不能改啊)
  3. 父组件的传值方式为初始化传值,即第一次传值后,接下来父组件的值发生改变不会再同步到子组件(老板给你下了一次任务,难得还会跟你说这个任务要怎么做吗?)

这三个点我就不一一演示了,那么我们就来写一个最简单的

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Company</title>
    <style>
        li{
            list-style: none;
        }

        .is-finished{
            text-decoration: line-through;
        }
    </style>
</head>
<body>
<div id="app-1">
    <todo-item :list="task"></todo-item>
</div>
<template id="task-template">
    <ul>
        <li>{{list}}</li>
    </ul>
</template>
<script src="../script/vue.js"></script>
<script>
    Vue.component('todo-item', {
        template: '#task-template',
        props:['list'],//props中的值无法被改变
        data:function () {
            return {
            }
        }
    })
    var main=new Vue({
        el:'#app-1',
        data:{
            task:'写后台'
        }
    })
</script>
</body>
</html>
用data获取prop中的值

这样就从老板那拿到了一个任务了,然后你说:“这个任务也太简单了吧,我要改个难度大的”,可是老板给你的就这样,能怎么办?当然有办法,我们不还有个data和computed嘛,如果是想要把props中的数据自己用,可以用data函数,把数据赋值给自己的属性中;如果只是想在上面做一些变化,就可以用computed,个人会喜欢用data来进行保存

data:function () {
            return {
                mytask:this.list
            }
        }
监听父组件的值的改变

这样即拿到了父组件的值,又可以对它进行修改,解决了第二个点。那根据第三个点,万一老板突然改任务了怎么办,他又不告诉你,不方,vue已经帮我们准备了一个好东西——watch,监听props传来的数值的变化,同步更新到自己的data数据中去。把老板说的话都记下来,然后去做。

watch:{
    list(val){
        this.mytask=val;
    }
}
prop中引用类型的坑

我们知道,在js中,数据类型分成两种,一种是基础数据类型,一种是引用数据类型(想了解两个的区别的话可以看这里 )。那么假如我们接到的任务不是一个,而是一组。现在的情况是,办公室不止你一个人,老板给你和另外两个人都安排了一个任务组,也就是说,3个人做同一个任务。那么按我们之前说的,我们自己用自己的data保存下来了,但是呢,我们看自己的任务太简单,想再往里面加任务,却发现神奇的事情发生了,代码如下

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Company</title>
    <style>
        li{
            list-style: none;
        }

        .is-finished{
            text-decoration: line-through;
        }
    </style>
</head>
<body>
<div id="app-1">
    <todo-item :list="task"></todo-item>
    <todo-item :list="task"></todo-item>
    <todo-item :list="task"></todo-item>
</div>
<template id="task-template">
    <ul>
        <li v-for="task in mytask">{{task}}</li>
        <button @click="add">加任务</button>
    </ul>
</template>
<script src="../script/vue.js"></script>
<script>
    Vue.component('todo-item', {
        template: '#task-template',
        props:['list'],//props中的值无法被改变
        data() {
            return {
                mytask:this.list
            }
        },
        methods:{
            add(){
                this.mytask.push('练英语')
            }
        },
        watch:{
            list(val){
                this.mytask=val;
            }
        }
    })
    var main=new Vue({
        el:'#app-1',
        data:{
            task:['写后台','写优快云']
        }
    })
</script>
</body>
</html>

当我们点击其中一个的时候,发现三个人的任务都增加了,也就意味着,我没办法再自己加自己的任务了,这就是引用类型和基本类型的区别。当我们改变自己的任务内容时,老板的发布的任务的内容也会改变。不是说老板的命令不能改的?是老板的任务并没有改,emmm具体看这里 


这个时候,深度克隆了解一下。

踩的坑差不多就这样,还有对象啊什么的,其实也是差不多。好好玩一下,就懂了

Vue.js 初学者评论组件实战指南 Vue.js 是一个开源的JavaScript框架,旨在通过数据驱动的视图和组件化的构建方式简化前端开发。它由尤雨溪(Evan You)创建,由于其轻量级、易于上手以及灵活性,它迅速成为Web开发者的首选框架之一。Vue的设计哲学强调“由简到繁”,让开发者能够使用简单的组件快速构建出应用的原型,同时又具备高度的可扩展性,能够构建复杂的单页应用(SPA)。其响应式系统使得状态管理变得简单,开发者可以集中精力在业务逻辑上。 阅读详情

相关推荐

AI开发助手介绍

AI开发助手介绍随着NLP方向发展越来越成熟,AI写代码领域出现了几个非常好的模型,今天笔者给大家推荐几个AI Coding 助手AI Coding助手是以IDEA插件或vim插件形式提供服务,在编辑器中写代码时,可以实时预测下一行要输入的代码,提升开发效率。Github Copilot首先要介绍的是Github Copilot,Copilot是个AI Coding助手,它从注释和代码中提取上下文,给出单行和整个函数的代码建议,Copilot由Open AI 的CodeX模型提供支持,它是一个由OpenAI

bobo_simpler的博客 5766

vue组件之通过 props 给子组件传数组数据

上机训练——移动端标题栏 需求说明 完成移动端标题子组件,在子组件中接收标题和两张修饰图片; 在父组件中调用子组件,并传递给子组件对应的内容; 图片以import的方式进行导入,页面效果如图所示。 实现过程: 父组件示例代码(App.vue): <template> <div id="app"> <TitleItem :list="listdata"></TitleItem> </div> </templat

wanglingli95的博客 8394

从2D到3D地图开发:手把手教你用Cesium+Three.js实现卫星轨迹可视化(含代码片段)

本文详细介绍了如何结合Cesium与Three.js实现从2D到3D的卫星轨迹可视化。通过对比传统Web GIS框架的局限,阐述了Cesium处理三维地理与轨道数据、Three.js负责高级图形渲染的分工优势,并提供了从环境搭建、坐标同步到动态粒子效果实现的完整代码实战指南。

nut55的博客 672

vue组件传值:父传子 props传递的类型和写法

props写法方式: 1.指定传递属性名 ,数组形式 props: ['id', 'name','list'] //不限制数据类型 2.指定传递属性名和数据类型,对象形式 props: { id: Number, name: String, isRequired: Boolean, list: Array, info: Object, addFn: Function } 3.指定属性名、数据类型、必要性、默认值 props: { // 基础的类型检查 (`null` .

dreamy_wx的博客 2059

超实用!用ChimeraX对AlphaFold 结果可视化(中): 蛋白结构美化篇

而一般需要的背景颜色是无色(白色),有三种方法可以更改背景颜色,这里我们介绍两种方法,第三种在下一小节中讲解。如果想选中蛋白链中的某一结构区域或者某些位点,可以用Ctrl+Shift+鼠标左键,或在软件窗口中点击。在这个窗口中可以对蛋白的主链、侧链、表面等颜色进行修改,只用在。,即可在右下角看到我们蛋白的序列信息,在这里面直接用鼠标选择要选择的结构域。就会有更多的颜色供我们选择,如果有特定的色号还可以在这个界面继续选择。后面的颜色(②),就可以选择想要的任何背景颜色(③)。就可以选择软件推荐的常用颜色。

m0_63153079的博客 5488

TypeScript版LangChain环境配置全攻略:从零搭建AI应用开发环境

大语言模型(LLM)作为当前AI应用开发的核心技术,通过API接口为开发者提供了强大的自然语言处理能力。其工作原理基于Transformer架构,通过预训练和微调实现对人类语言的深度理解与生成。在工程实践中,开发者需要将LLM与外部工具、数据源和业务逻辑有效集成,这正是LangChain框架的技术价值所在——它提供了标准化的组件和接口,简化了复杂AI应用的构建流程。应用场景涵盖智能客服、内容生成、数据分析助手等多个领域。本文聚焦于TypeScript/JavaScript生态下的LangChain开发,详细

weixin_29055699的博客 253

Vue -- props

1 组件的 props 2 在组件中声明 props 3 无法使用未声明的 props 4 props 的大小写命名 5 props 验证 6 对象类型的 props 节点 7 props 验证 8 基础的类型检查 8.1 支持校验的基础类型 9 多个可能的类型 10 必填项校验 11 属性默认值 12 自定义验证函数 13 props配置项的注意点

emmmm..... 3万+

【Bug已解决】npm install -g @anthropic-ai/claude-code 出现 EACCES: permission denied 解决方案

方案适用场景推荐指数nvm 管理 Node长期开发环境,一次配置永久生效⭐⭐⭐⭐⭐修改 npm 全局目录不想引入 nvm,快速解决⭐⭐⭐⭐修复现有目录权限之前用过 sudo 装包,需要修复⭐⭐⭐Windows 管理员/改目录Windows 平台专用⭐⭐⭐⭐官方原生安装脚本想彻底避开 npm 权限问题⭐⭐⭐⭐报的本质是npm 全局安装目录的属主权限与当前执行用户不匹配,而不是 npm 或 Claude Code 本身有问题。不要用sudo"强行"解决。

一键难忘的博客 1万+

vue中的props(父传子数据)

<div id="app"> <child :m="msg"></child> </div> <script> //child是vm的一个子组件 //template:只能获取当前实例(例如:child)data或methods中的属性 //组件之间数据传递 //vue中的数据传递是单向的 ...

weixin_45562774的博客 901

《网络安全自学教程》- OSI七层模型分层及作用,数据封装与解封过程,数据传输过程。

OSI分哪七层,每层的作用是什么,解释数据在七层模型中是怎样传输的,封包和解封过程,数据包在每一层是怎么封装和解封的。

wangyuxiang946的博客 1万+

AI驱动的客户终身价值分析:深入理解公司的收入质量

客户终身价值(Customer Lifetime Value, CLV)是衡量客户在整个生命周期内能为企业带来多少利润的重要指标。传统的CLV计算方法往往过于简化,无法准确反映复杂的客户行为和收入模式。本文旨在介绍如何利用人工智能技术,特别是机器学习方法,构建更精确的CLV预测模型,从而帮助企业深入理解其收入质量。CLV的基本概念和商业意义传统CLV计算方法的局限性基于机器学习的CLV预测方法特征工程和模型选择策略实际应用案例和Python实现首先介绍CLV的基本概念和商业背景。

AI云原生与云计算技术学院 477

vue组件获取props_Vuejs第九篇之组件作用域及props数据传递实例详解

这篇文章主要介绍了Vuejs第九篇之组件作用域及props数据传递实例详解的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下本篇资料来于官方文档:本教程是小编结合官方文档整理的一套更加细致,代码更多更全的教程,特别适合新手阅读。props数据传递①组件实例的作用域:是孤立的,简单的来说,组件和组件之间,即使有同名属性,值也不共享。var vm = new Vue({el: '#app',...

weixin_35807050的博客 370

Allegro Design Entry HDL(OrCAD Capture HDL)原理图是设计快速入门图文教程

Allegro Design Entry HDL是Cadence公司开发的原理图设计工具,也可与Allegro PCB设计工具无缝对接,虽然板级开发中不如Design Entry CIS(又名 OrCAD Capture CIS)的使用那么广泛,但是由于Design Entry HDL支持芯片的开发,所以有不少公司尤其是芯片背景公司,选择使用Design Entry HDL进行原理图设计。两个原理图开发工具的使用方法大同小异,本文简单介绍使用Allegro Design Entry HDL开始一个新的设计,

fydar的博客 4134

Vue中父子组件之间的传值

父组件向子组件传值 子组件向父组件传值

竹叶轻拂水 4776

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【视频】vue组件之props属性

P9vue组件之props属性 https://www.bilibili.com/video/av91679349?p=9

学亮编程手记 554

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VueJs+React初学小结

永远学习最新的资料。 想要印象深刻就看文档,快速入手就看视频。

github_39211471的博客 599

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

vue父传子,props

props传递 在父组件引用子组件 父组件 <template> <div> <component :pass='string'> <div> </template> <script> import Axios from "axios"; import pass from './aaa' export default...

weixin_44825701的博客 194

vue传值给子页面html,vue.js如何父传子?

vue.js如何父传子?下面本篇文章给大家介绍一下vue.js中父传子的传值方式。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。引用官网的一句话:父子组件的关系可以总结为 prop 向下传递,事件向上传递。父组件通过 prop 给子组件下发数据,子组件通过事件给父组件发送消息父组件向子组件进行传值父组件:import child from './child'export defa...

weixin_32968105的博客 302

Vue.js 组件之间传递数据

前言 组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用。如何传递数据也成了组件的重要知识点之一。 组件 组件与组件之间,还存在着不同的关...

setsunadoudou的博客 128

vue父组件给子组件传值

1.首先定义一个子组建,然后在父组件components:{zujian}先引入!!! 2.在父组件中使用子组建<zujian v-bind:aaa='arr'></zhujian> //v-bind绑定一个事件 假如是aaa 而后面的arr是在data中想要传递的数据(这里我先定义了一个数组,当然传递一个值或者json也是一样的,一个值就不用循环了) 3.然后在...

smile54533的博客 267

Vue传值取值大总结

Vue传值大总结 前言 一直想成为一个全栈人员,学习前端也是必备技能之一,Vue作为现在比较流行的框架,我也想学习一下,今天把Vue那些转的头晕的传值方法总结一下,以备以后查看 使用props传值 props可以用于父组件传值到子组件 //父组件 <child-label title='aaaa'></child-label> // 子组件 export default { props:[title,] } 此时这个title从父组件传到了子组件 使用$emit // 子组件

YXHPY BLOG 1616

vue uni-app 组件内定义的参数默认值无效,为undefined

先来看案发现场: 子组件.vue props: { // 实际分数 score: 0, // 属性值 // 最大分数 maxScore:{ type: Number, value: 10.0 }, // 星星个数 starAllNum: 5, } 父组件.vue <star-score :score = 9 ></star-score> 测试一下接收参数俩种定义方式,以及使用自定义数.

weixin_46221198的博客 3507

Vue的表单双绑和组件

表单双绑和组件 表单双绑 为什么要实现数据的双向绑定 ​ 在Vue.js 中,如果使用vuex ,实际上数据还是单向的,之所以说是数据双向绑定,这是用的UI控件来说,对于我们处理表单,Vuejs 的双向数据绑定用起来就特别舒服了。即两者并不互斥,在全局性数据流使用单项,方便跟踪;局部性数据流使用双向,简单易操作。 在表单中使用双向数据绑定 ​ 你可以用v-model 指令在表单 、 及 元索上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但v-model本质上不过是语法糖

爱学习的大雄的博客 196

sync不生效 vue_vue 听说你很会传值?

大小 vue 项目都离不开组件通讯, 在这里总结一下vue组件通讯方式并列出, 都是简单的例子. 适合像我这样的小白。如有错误,欢迎指正。温馨提示: 下文没有列出 vuex, vuex 也是重要的组件通讯方式。props最常用的组件通讯方式值可以是数组或对象,使用对象时可以配置高级选项,如类型检测、自定义验证和设置默认值方向:父 -> 子Son.vuecopyexport default {...

weixin_34055346的博客 221

Vue——组件间常用通信方式详解

本文主要介绍了Vue中组件间常用的几种通信方式

Bonsoir777的博客 582

Vue技术之经典案例todolist

Vue技术之经典案例todolist

m0_62956385的博客 966
上一篇: vue.js初学之组件开发理解
下一篇: Js代码执行时的那点事儿
Yvan_Lin
博客等级 码龄10年 11粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值