代码拉取完成,页面将自动刷新
最大的问题: 外界无法知道当前状态是开还是关
解决:添加 value 属性, 添加 input 事件
<Switch :value="xxx" @input="x = $event"/>
用 props
即可
用 context.emit('input',xxx)
即可
目前不考虑,传入多个参数,防止自己晕, 后续在扩展了解
update:x
<Switch :value="y" @update:value="y = $event" />
<Switch v-model:value="y" />
文档
这是Vue2到Vue 3的一个大变动(breaking change)文档里面有详细的介绍v-model
和.sync
context.emit
,与 this.$emit
作用相同已上传到Gitee:https://gitee.com/boheweb/mint-ui
inheritAttrs: false
可以取消默认绑定$attr
s或者context.attrs
获取所有属性v-bind="$attrs"
批量绑定属性
const {size, level, ...xxx} = context.attrs
将属性分开<Button
@click=?
@focus=?
@mouseover=?
theme="button or link or text"
level="big or normal or minor"
size="bif normal small"
disabled
loading
></Button>
</Button>
<Dialog
visible
title="标题"
@yes="fn1" @no="fn"
></Dialog>
步骤
让 Dialog 支持 visible 属性
注意不能修改 props
让 Dialog 可以点击关闭
让 Dialog 支持自定义内容
把 Dialog 移到 body 下
一句话打开 Dialog
技术点: 动态挂在组件
<Tabs>
<Tabs title="导航1">内容1</Tabs>
<Tabs title="导航2"><Component1 /></Tabs>
<Tabs title="导航1"><Component1 x="hi" /></Tabs>
</Tabs>
或
<Tabs :data="[
{title:'导航1', content: '内容1'},
{title:'导航2', content: Component1},
{title:'导航3', content: h(Component1, {x: 'hi'})},
]"/>
context.slots.default()
数组console.log({...context});
console.log({...context.slots});
console.log({...context.slots.default});
console.log({...context.slots.default()});
console.log({...context.slots.default()[0]});
console.log({...context.slots.default()[0]});
console.log({ ...context.slots.default()[1]})
setup(props, context) {
const defaults = context.slots.default()
console.log(defaults[0])
return {
defaults
}
}
type
console.log(defaults[0].type === Tab)
若改成div
观察
defaults[n].type === Tab
来检测第n个是不是Tab的类型,同时在这里我们也深入的了解到了vue的原理,每一个Tab.vue
它最终会导出一个对象,因为这个对象和defaults[n].type是全等的。index
表示,不推荐name
表示,不方便title
表示,有漏洞设计就是妥协的艺术
const defaults = context.slolts.default()
onMounted
/ onUpdated
/ watchEffect
const indicator = ref<HTMLDivElement>(null)
const { width, left } = el.getBoundingClientRect()
const { width, left, top, bottom } = el.getBoundingClientRect(); 都可以获取
border-raduis: 100px 40px
clip-path: ellipse(80% 60% at 50% 40%)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。