关于vue.js的props里“禁用特性继承”的理解

news/2024/7/24 11:29:56 标签: vue, props

首先假设如今有一个组件<base-input></base-input>,创建改组件式的代码如下:

Vue.component("base-input", {
  inheritAttrs: false, //此处设置禁用继承特性
  props: ["label"],
  template: `
    <label>
      {{ label }}
      <input
        v-bind="$attrs"
      >
    </label>
  `,
  mounted: function() {
    console.log(this.$attrs);
  }
});

在app.vue中调用该组件时的代码如下:

<base-input
      label="姓名"
      class="username-input"
      placeholder="Enter your username"
      data-date-picker="activated"
    ></base-input>

运行后再chrome浏览器查看html结构时的结果如下:

<label class="username-input">
      姓名
      <input placeholder="Enter your username" data-date-picker="activated">

</label>

而当我们将inheritAttrs这行代码注释的时候其html文档又会如下所示:

<label placeholder="Enter your username" data-date-picker="activated" class="username-input">
      姓名
      <input placeholder="Enter your username" data-date-picker="activated">

</label>

我们发现现在label标签和input标签上此时都继承了父组件的属性。

label标签是默认会继承来自父组件的属性,而input标签能继承则是因为我们使用了v-bind="$attrs"。

假如我们将v-bind="$attrs"去掉则会发现如今的html的结构又会变成下面这样:

<label placeholder="Enter your username" data-date-picker="activated" class="username-input">
      姓名
      <input>

</label>

本着探索的精神现在我们再把inheritAttrs这一句话加上,将v-bind="$attrs"放到label标签上,结果相信大家都能知道了,在这里就不详细说了。


http://www.niftyadmin.cn/n/886789.html

相关文章

完全由前端实现的超时时跳转到登录页(或其它页面)

var lastTime new Date().getTime(); var currentTime new Date().getTime(); var timeOut 1*60*1000; //设置超时时间&#xff1a; 1分// 鼠标移动事件 $(document).mousemove(function(){lastTime new Date().getTime(); //更新操作时间 });// 定时器 间隔1秒检测是否长时…

web实现断点续传

普通单文件上传&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>断点续传</title></head> <body> <div id"app"><input type"file" i…

ztree点击树节点前的展开图标分级加载下拉树

onExpand&#xff1a;用于捕获节点被展开的事件回调函数&#xff0c;这个是关键。 <ul id"share-to-department-modal-tree"></ul> var fileTreeSettingForShareToDept {check : {enable : true,chkboxType : {"Y" : "","N&…

理解 Go make 和 new 的区别

Go语言中new和make是内建的两个函数&#xff0c;主要用来创建分配类型内存。在我们定义生成变量的时候&#xff0c;可能会觉得有点迷惑&#xff0c;其实他们的规则很简单&#xff0c;下面我们就通过一些示例说明他们的区别和使用。 变量的声明 var i int var s string变量的声…

怎么理解vue中$listeners属性?

首先&#xff0c;$listeners是什么&#xff1f; 假设有父组件Parent和子组件Child // Parent <template>...<child v-on:event-one"methodOne" v-on:event-two"methodTwo" />... </template> 那么你在使用Child时&#xff0c;传入的所…

vue实例之组件开发:图片轮播组件

一、普通方式&#xff1a; 其中&#xff0c;index是关键。 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <style> html, body{margin: 0;padding: 0; } .photo-player{width: 456px;height: 670px;over…

vue实例之组件开发:多标签切换组件/tabs切换组件

一、自定义方式&#xff1a; 定义组件Tabs.vue <template><div class"tabs"><button v-for"(tab, key) in tabs" :key"key" click"indexkey" :class"{active: keyindex}">{{tab}}</button><ul…

go 切片及其基本操作

1.1切片 Go中常用的数据结构是切片&#xff0c;即动态数组&#xff0c;其长度并不固定&#xff0c;我们可以向切片中追加元素&#xff0c;它会在容量不足时自动扩容。 在 Go 语言中&#xff0c;切片类型的声明方式与数组有一些相似&#xff0c;不过由于切片的长度是动态的&am…