Vue笔记

事件

子组件emit,父组件监听

插槽

什么是插槽?

插槽就是子组件中的提供给父组件使用的一个占位符,用<slot> 表示,父组件可以在这个占位符中填充任何模板代码,如 HTML、组件等,填充的内容会替换子组件的标签。插槽显不显示、怎样显示是由父组件来控制的,而插槽在哪里显示就由子组件来进行控制。

大概类似父→子传值的语法糖吧。其实也可以直接用props传,但写把值写在属性里有点怪(就像把<h1>value</h1>写成了<h1 value=xxx></h1>,插槽能让自定义组件的写法像前者)

作用域插槽

父→子:正常传

子→父:父组件无法访问子组件作用域。这时子组件在<slot> 元素里bind值,父组件通过 v-slot 拿到变量对象。

子组件:
<span>
  <slot v-bind:user="user">
    {{ user.lastName }}
  </slot>
</span>
父组件
<current-user>
  <template v-slot:default="slotProps">
    {{ slotProps.user.firstName }}
  </template>
</current-user>

具名插槽

指定名字,一个萝卜一个坑对应填入。

父组件里通过在 <template> 元素上使用 v-slot 指令,并以 v-slot 的参数的形式提供其名称。

子组件
<div class="container">
  <header>
    <slot name="header"></slot>
  </header>
  <main>
    <slot></slot>
  </main>
  <footer>
    <slot name="footer"></slot>
  </footer>
</div>
父组件
<base-layout>
  <template v-slot:header>
    <h1>Here might be a page title</h1>
  </template>

  <p>A paragraph for the main content.</p>
  <p>And another one.</p>

  <template v-slot:footer>
    <p>Here's some contact info</p>
  </template>
</base-layout>

$slots

$slots是组件插槽集,是组件所有默认插槽、具名插槽的集合,可以用来获取当前组件的插槽集。

调试

examples目录,我们看到的element官网就是在这个目录里面,页面代码在docs下面的zh-CN,页面都是.md文件。不同语言版本都在,可以自己修改看看。

接下来就是调试组件源码了,组件的源码都在packages里面,找到对应的组件,修改一下代码看一下响应。

Upload

2019-05-16 ElementUI - Upload组件的使用总结 - 简书 (jianshu.com)

vue i标签中icon图标的设置,之前搞错了方向,一直以为是按照图片格式弄,其实是按照编辑文字格式的逻辑来的

1
<i class='el-icon-picture-outline' style="font-size: 15px; font-weight: 500" />
updatedupdated2024-07-162024-07-16