//透传简单来说就是在子组件写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>