Vue.js中使用插槽将数据从父组件传递到子组件

这篇文章给大家介绍一下如何使用vue插槽在vue.js中将数据从父组件传递到子组件。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

Vue.js中使用插槽将数据从父组件传递到子组件

这篇文章适合所有阶段的开发人员(包括初学者)。

在你开始之前

您的计算机上将需要以下内容:

已安装Node.js版本10.x及更高版本。 您可以通过在终端/命令提示符中运行以下命令来验证版本:node -v

立即学习“前端免费学习笔记(深入)”;

代码编辑器; 推荐Visual Studio Code

Vue的最新版本,已全局安装在您的计算机上

您的计算机上已安装Vue CLI 3.0。 为此,请先卸载旧的CLI版本:

npm uninstall -g vue-cli

登录后复制

然后,安装新的:

npm install -g @ vue / cli

登录后复制

在此处下载Vue入门项目

解压下载的项目

导航到解压缩的文件并运行命令以使所有依赖项保持最新:

npm install

登录后复制

什么是Vue插槽

Vue插槽是Vue团队创建的Vue模板元素,旨在为模板内容分发提供平台。 它是受Web组件规范草案启发的内容分发API的实现。 使用Vue插槽,您可以在项目中的各个组件之间传递或分发HTML代码。

为什么Vue插槽很重要?

内容分布很重要,原因有很多,其中一些与结构有关。使用vue插槽,可以构造一个html接口(类似于typescript),然后可以将其用作通过模板注入构建组件的指南。它是一个非常可伸缩和高效的解决方案,可以将模板代码从一个组件传递到另一个组件。

内容定位是Vue插槽的另一个很好的用例。您只需创建一个模板,然后使用另一个组件或父组件按照您希望模板显示在用户界面中的方式排列该模板。

插槽与道具

如果您了解Vue插槽,您可能会想知道道具和插槽是否做同样的事情。 好了,这些工具或平台的中心思想是鼓励资源的可重用性和效率。 考虑到这一点,插槽和道具是相似的。

props处理在组件之间传递数据对象,而slot处理在组件之间传递模板(html)内容。但是,作用域插槽的行为与道具完全一样;这将在本教程中清楚地说明。

Vue插槽语法

对于插槽,您的子组件充当您希望如何安排内容的接口或结构。可能是这样的:

  
      

登录后复制

父组件(要注入子组件的HTML内容所在的地方)可以如下所示:

   

Hello World!

 

登录后复制

此组合将返回如下所示的用户界面:

  
    

Hello World!

  

登录后复制

请注意,它本身的插槽是如何作为内容注入位置和方式的指南的——这是中心思想。

演示

如果您从一开始就关注这篇文章,那么您将在vs代码中打开vue starter项目。为了演示语法部分中的简单示例,我们的父组件将是app.vue文件。打开app.vue文件并在此代码块中复制:

  
    Vue.js中使用插槽将数据从父组件传递到子组件          

Hello World!

      
import Test from './components/Test.vue'export default { name: 'app', components: { Test }}

登录后复制

子组件将成为测试组件,因此请在test.vue文件中复制下面的代码块:

  
      
export default { name: 'Test'}

登录后复制

使用以下命令在开发环境中运行应用程序:

npm run serve

登录后复制

命名插槽

Vue允许一个组件有多个插槽,这意味着您可以拥有任意数量的插槽。要测试此功能,请将此新代码块复制到test.vue文件中:

  
              
export default { name: 'Test'}

登录后复制

如果运行应用程序,可以看到hello world被打印了三次。因此,如果您想添加更多的内容(例如,一个标题、一个带有文本的段落,然后是一个无序的列表),vue允许我们命名作用域,以便它可以标识要显示的特定作用域。在test.vue文件中命名插槽如下:

  
              
export default { name: 'Test'}

登录后复制

现在,还必须根据要在其中显示HTML元素的槽名来标记这些HTML元素。将此复制到app.vue文件的模板部分:

  
    Vue.js中使用插槽将数据从父组件传递到子组件          

Hello world!

      

Hello, I am a paragraph text

      
            
  • Hello, I am a list item
  •         
  • Hello, I am a list item
  •       
      

登录后复制

v-castle语法

当VUE版本2.6发布时,它附带了一个更好的语法来引用名为v-slot的子组件中的插槽名称,这意味着要替换初始的插槽语法。因此,与其使用这样的槽来替代父组件模板:

   

Hello world!

登录后复制登录后复制

从3.0版开始,它现在将如下所示:

   

Hello world!

登录后复制登录后复制

注意,除了字符串从slot到v-slot的细微变化外,还有一个重大变化:v-slot只能在模板上定义,而不能在任何html元素上定义。这是一个很大的变化,因为它质疑命名插槽的可用性,但截至本文撰写之时,插槽仍然是文档的很大一部分。

作用域插槽

设想一个场景,其中Vue插槽还可以从父组件访问子组件中的数据对象,这是一种具有道具功能的插槽。要说明这一点,请继续,通过将下面的代码块复制到test.vue文件中,在子组件中创建一个数据对象:

  
              
export default { name: 'Test', data(){ return{ team:"FC Barcelona" } }}

登录后复制

与普通props一样,v-bind指令用于将数据中的团队与父组件中的prop引用绑定。打开app.vue文件并将下面的代码块复制到模板部分:

  
    Vue.js中使用插槽将数据从父组件传递到子组件          

Hello world! my team is {{team}}

      

登录后复制

如果运行应用程序,您将看到数据对象已成功传递到父组件。

结论

本文向您介绍了vue.js中的插槽,以及它们对内容注入的重要性。您看到了如何设置它,甚至看到了如何为一个组件设置多个插槽。你还看到了狭槽如何通过作用域来充当道具。

英文原文地址:https://blog.logrocket.com/how-to-pass-html-content-through-components-with-vue-slots/

相关推荐:

2020年前端vue面试题大汇总(附答案)

vue教程推荐:2020最新的5个vue.js视频教程精选

更多编程相关知识,请访问:编程入门!!

以上就是Vue.js中使用插槽将数据从父组件传递到子组件的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2725480.html

(0)
上一篇 2025年3月7日 23:23:35
下一篇 2025年3月7日 23:23:43

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 25道初级Vue.js面试问题

    1. 为什么Vue被称为“渐进框架”? 使用渐进式框架的代价很小,从而使现有项目(使用其他技术构建的项目)更容易采用并迁移到新框架。 Vue.js 是一个渐进式框架,因为你可以逐步将其引入现有应用,而不必从头开始重写整个程序。 Vue 的最…

    2025年3月7日
    000
  • 你必须知道的10个Chrome开发工具和技巧

    1. 模拟慢速网络和慢速设备 我们可能习惯了在城市的网速,那是杠杠的,并不意味网速在中国哪个都一样的,在一些偏远地方,网速依然慢的可怜,所以有时候我们所做的产品是需要考虑网速慢的情况的,那怎么模拟呢? 打开谷个浏览器的performance…

    2025年3月7日 编程技术
    200
  • vue.js为什么要用谷歌浏览器

    vue.js要用谷歌浏览器的原因:1、相比各种浏览器,chrome的界面更加简洁;2、扩展性强,谷歌浏览器有很多的扩展插件;3、速度快;4、系统不会崩溃;5、隐身访问。 本教程操作环境:windows7系统、Vue2.9.6版,该方法适用于…

    2025年3月7日
    200
  • vue.js中有多少钩子函数

    vue.js中有八个钩子函数,分别是:1、beforeCreate用于创建前;2、created用于创建后;3、beforeMount用于挂载前;4、mounted用于挂载后;5、beforeDestroy用于销毁前。 本教程操作环境:wi…

    2025年3月7日
    200
  • react子向父通信有哪些方法?

    react子组件向父组件通信有两种方法:回调函数和自定义事件机制;但有时用自定义事件会显然过于复杂,所以一般用回调函数,父组件事先定义好回调函数,并将回调函数传递给子组件,子组件调用回调函数,向父组件通信。 本教程操作环境:windows7…

    2025年3月7日
    200
  • 使用Node.js+Vue.js来构建文件压缩应用程序

    相关推荐:《node js教程》 Node.js为我们提供了一个模块来协助文件压缩。在本文中,我们将构建一个应用程序,用户可以在该应用程序中上传他们想要压缩的文件,然后使用Node.js Zlib模块下载该文件的压缩版本。 前提 要继续学习…

    2025年3月7日 编程技术
    200
  • vue.js怎么加载js插件

    vue.js加载js插件的方法:首先安装依赖包Bootstrap及jQuery;然后导入相关的js和css,并插入相关的DOM元素;最后保存代码并运行项目即可。 本教程操作环境:windows7系统、Vue2.9.6版,该方法适用于所有品牌…

    2025年3月7日 编程技术
    200
  • 了解Promise.race() 和 Promise.any()的使用方法

    相关推荐:《javascript视频教程》 自1996年发布以来,JS 一直在稳步改进。随着ECMAScript版本的许多改进,最近的版本是ES2020。JS 的一个重要更新是Promise,在2015年,它以 ES6 的名义发布。 什么是…

    2025年3月7日
    200
  • 简书 jsPlumb使用

    javascript栏目介绍jsplumb的作用 推荐(免费):javascript(视频) 1.jsPlumb的作用:用于绘制dom元素之间的连线的一个框架,需要一个开始点的id,以及结束点的id就可以进行连线。可以通过属性设置连线端点的…

    2025年3月7日
    200
  • Nodejs和Vuejs之间的差异

    nodejs和vuejs之间有什么差异?下面本篇文章给大家介绍一下nodejs和vuejs的区别。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 相关推荐:《nodejs 教程》、《vue.js教程》 Node.js 和 …

    2025年3月7日
    200

发表回复

登录后才能评论