vue面试题:vue父组件如何向子组件中传递数据?

字母哥哥
优质创作者: 编程框架技术领域
领域专家: 后端开发技术领域
2022-03-10 17:08:18
加精

vue父组件如何向子组件中传递数据?

参考答案:


可以分为 静态传递 或者 使用 v-bind动态传递:

例如:

给 prop 传入一个静态的值:

<blog-post title="My journey with Vue"></blog-post>

也知道 prop 可以通过 v-bind 动态赋值,例如:

<!-- 动态赋予一个变量的值 -->
<blog-post v-bind:title="post.title"></blog-post>

<!-- 动态赋予一个复杂表达式的值 -->
<blog-post v-bind:title="post.title + ' by ' + post.author.name"></blog-post>

在上述两个示例中,我们传入的值都是字符串类型的,但实际上任何类型的值都可以传给一个 prop。

子组件接受:

export default {
  props : ["title"]
 }
 //或者
 export default {
  props : {
  	title:{
    	type:string,
        default:""
    }
  }
 }


详解:


传入一个数字:


<!-- 即便 `42` 是静态的,我们仍然需要 `v-bind` 来告诉 Vue -->
<!-- 这是一个 JavaScript 表达式而不是一个字符串。-->
<blog-post v-bind:likes="42"></blog-post>

<!-- 用一个变量进行动态赋值。-->
<blog-post v-bind:likes="post.likes"></blog-post>

传入一个布尔值:


<!-- 包含该 prop 没有值的情况在内,都意味着 `true`。-->
<blog-post is-published></blog-post>

<!-- 即便 `false` 是静态的,我们仍然需要 `v-bind` 来告诉 Vue -->
<!-- 这是一个 JavaScript 表达式而不是一个字符串。-->
<blog-post v-bind:is-published="false"></blog-post>

<!-- 用一个变量进行动态赋值。-->
<blog-post v-bind:is-published="post.isPublished"></blog-post>

传入一个数组:


<!-- 即便数组是静态的,我们仍然需要 `v-bind` 来告诉 Vue -->
<!-- 这是一个 JavaScript 表达式而不是一个字符串。-->
<blog-post v-bind:comment-ids="[234, 266, 273]"></blog-post>

<!-- 用一个变量进行动态赋值。-->
<blog-post v-bind:comment-ids="post.commentIds"></blog-post>

传入一个对象:


<!-- 即便对象是静态的,我们仍然需要 `v-bind` 来告诉 Vue -->
<!-- 这是一个 JavaScript 表达式而不是一个字符串。-->
<blog-post v-bind:author="{ name: 'Veronica', company: 'Veridian Dynamics' }"></blog-post>

<!-- 用一个变量进行动态赋值。-->
<blog-post v-bind:author="post.author"></blog-post>

传入一个对象的所有属性:


如果你想要将一个对象的所有属性都作为 prop 传入,你可以使用不带参数的 v-bind (取代 v-bind:prop-name)。

例如,对于一个给定的对象 post:

post: {
  id: 1,
  title: 'My Journey with Vue'
}

下面的模板:

<blog-post v-bind="post"></blog-post>

等价于:

<blog-post
  v-bind:id="post.id"
  v-bind:title="post.title"
></blog-post>
...全文
1078 1 打赏 收藏 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-前端 发布问题, 以便更快地解决您的疑问

316,703

社区成员

发帖
与我相关
我的任务
社区描述
欢迎加入几何心凉的前端社区,本社区活动丰富可以拿到众多周边礼物,本社区还对接Vue技能树可以更加系统的进行学习,还为大家定期举办博主成长计划,助您赢在CSDN同时带您遨游在前端技术的海洋中!!
前端学习经验分享 个人社区 北京·丰台区
社区管理员
  • 几何心凉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

诚挚的邀请大家加入几何心凉社区,在这里您可以结实挚友、提升技术、分享经验、成就自己

  • 【社区活动】本社区受官方长期扶持,您可以通过活动打造个人IP,让更多的人受益于您的分享,同时我们还会奉上精美周边;
  • 【赢在CSDN】社区会对社区成员开设博主扶持计划,集结优质博主分享成长经验,更是疑问在线解答,定期直播连麦,只要您是本社区成员皆可免费享受此权益,让我们携手共进助您速获万粉头衔;
  • 【Vue技能树】本社区创建人同时作为Vue技能树构建者,可为本社区开设技能树投稿通道,获得此权益后我们的高质量的文章被技能树收录获得更多曝光机会;
  • 【简历/就业指导】本社区创建者目前兼职高校就业指导,如果您是学生准备找工作或者您是职场人在应聘中遇到任何问题都可以在这里寻求帮助,我们会定期开设简历审查、面试技巧等就业方面的直播讲解;
  • 【技术交流】任何语言任何方向的技术文章我们都可以汇聚于此,大家可以摸鱼时间可以来此处提升自己,遨游在技术的海洋中;
  • 【立码吐槽】不管你是学生还是打工人,相信在生活中肯定有不断的新鲜事发生,这些事情可以是令你高兴的(比如今天过生日)可以是伤心的(比如我们丢了一个发卡)当然还会有很多,不满、发泄、求安慰等等,那么你可以在这个专栏中做出分享,求一句生日快乐、上岸顺利、加油老铁等等暖心的话;相信我们社区的伙伴看到后一定会速来吐槽;
  • 【bug记录】开发中的坑、学习中的雷,我们皆可投递于此,让更多的人借着分享精准避免从而高效开发;
  • 【更多】更多专栏正在筹备中。。。如果您是社区成员、如果您想为社区建设贡献力量,可以私聊社区管理员;

试试用AI创作助手写篇文章吧