//透传简单来说就是在子组件写style,class或者函数可以将它们,自动直接传递给 template:里面的单个节点。
//多个节点透传的自动传递会生效,如果在节点中像使用,那么就需要在对应的节点中写像:style="$attrs.style"的形式,才能对应的样式或函数接收到
//inheritAttrs: false可以阻止透传
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<div>App 父组件</div>
<hr>
<son
class="box"
style="width: 300px; height: 200px; background: #ccc;"
@click="handleClick"
></son>
</div>
<script src="./lib/vue.global.js"></script>
<script>
const app = Vue.createApp({
methods: {
handleClick() {
console.log('点击了子组件')
},
}
})
app.component('son', {
template: `
<div class="container" style="background: #f00;" @click="handleSonClick">
这是子组件
</div>
<div :style="$attrs.style">第二个节点</div>
`,
methods: {
handleSonClick() {
console.log('这是子组件的 son click 事件...')
},
},
})
app.mount('#app')
</script>
</body>
</html>