随手记 Vue 总结
Vue 组件的三种方式(单文件组件)
用 JS 对象
1
export default { data, props, methods, created, ...}
用 TS 类
<script lang="ts">
1
2
3
4
5
export default class XXX extends Vue{
xxx: string = 'hello';
Number) xxx: number | undefined; (
}用 JS 类
<script lang="js">
1
2
3
4@Component
export default class XXX extends Vue{
xxx = 'hi'
}
引入 SVG Icon
- 在 src/shims-vue.d.ts 中添加
1 | declare module "*.svg" { |
1 | yarn add svg-sprite-loader -D |
引入 svg 目录
封装 Icon 组件时,直接引入真个图标文件,避免了一个个引入。demo
1 | let importAll = (requireContext: __WebpackModuleApi.RequireContext) => requireContext.keys().forEach(requireContext); |
组件点击事件传递
封装组件时遇到的一个问题:
button 里加了一个 icon 组件,当在 button 上写点击事件时,会没有用,因为点击的是 icon 组件里面的元素。
解决方法:
在 icon 组件里写一个 $emit, 它被点击时,触发外面的点击事件
Labels.vue
1 | <li v-for="(item, index) in this.outputTags" :key="index"> |
Icon.vue
1 | // 触发点击事件,这样父组件就可以监听到了 |