动态组件 :is与is区别 vue.js
2023-09-27 14:26:50 时间
首先举个栗子:
众所周知,ul嵌套li标签正常的写法是这样的
<ul>
<li></li>
<li></li>
<li></li>
</ul>
但是,在特殊需求上,我们要这样:
<ul>
<nav-cont></nav-cont>
<nav-cont></nav-cont>
<nav-cont></nav-cont>
</ul>
可是呢,ul标签嵌套nav-cont组件,当html渲染dom时发现ul标签和nav-cont标签不是一套的是无效的,这样可能会导致浏览器报错,于是is就诞生了
为什么要使用is?
在vue的官网组件部分中,有明确的描述:当使用 DOM 作为模板时 (例如,使用 el
选项来把 Vue 实例挂载到一个已有内容的元素上),你会受到 HTML 本身的一些限制,因为 Vue 只有在浏览器解析、规范化模板之后才能获取其内容。尤其要注意,像<ul>、<li>、<ol>、<table>、<selsec> 这样的元素里允许包含的元素有限制,而另一些像 <option> 这样的元素只能出现在某些特定元素的内部。通俗一点讲,就是“龙生龙,凤生凤,老鼠的儿子会打洞”,特殊的一下父元素如<ul>、<ol>、<table>、<selset>里面不能包含不属于它的子元素,而与之相对应的<li>、<tr>、<opyion>只可以出现在特定的父元素里面。
上代码:
<!-- 1 is -->
<!-- 这里就幻想一下有个组件名为 nav-cont 的组件-->
<ul>
<li is='nav-cont'></li>
<li is='nav-cont'></li>
</ul>
<!-- 2 v-bind:id 简写为 :is="组件名变量" -->
<!-- 这里就幻想一下有个变量名为 nav-cont 的组件-->
<ul>
<li :is='nav-cont'></li>
<li :is='nav-cont'></li>
</ul>
<!-- 1和2的写法,页面渲染时都会变为: -->
<ul>
<nav-cont></nav-cont>
<nav-cont></nav-cont>
</ul>
总结:
is--直接传递一个组件
:is--vue实例的data里找到相对应的值,用这个值再去所有的component里找到对应的组件
此文章有引用Vue组件的is具体用法
相关文章
- 基于Vue、Axios、Node.js的图书管理系统【网页前端高级编程】
- Vue.js源码(2):初探List Rendering
- Vue.js:使用v-model创建一组复选框
- vue.js:父子组件的实训案例watch实现
- vue.js:组件化的实现和使用过程
- vue.js初识组件
- Vue.js Ajax(axios)
- 转: Vue.js——60分钟组件快速入门(上篇)
- 【Vue课堂】Vue.js 父子组件之间通信的十种方式
- 解析Vue.js中的computed工作原理
- vue.js的<slot>
- 【笔记】Vue Element+Node.js开发企业通用管理后台系统——电子书列表页面开发
- 前端添加水印效果攻略【vue和原生js添加方式】
- Vue.js 2.5新特性介绍
- Vue.js组件
- Vue.js之父子组件
- vue.js将px转化为rem
- Vue.js 中,7种定义组件模板的方法
- Vue.js 系列教程 3:Vue-cli,生命周期钩子
- Vue.js 系列教程 2:组件,Props,Slots
- Vue.js——60分钟组件快速入门(下篇) 概述【3】
- Vue.js——使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用【6】
- vue.js--Tab选项卡
- 用Vue.js 和 vue-router 创建单页导航和分页
- vue——router.js动态注册组件