有时为一个插槽设置默认内容是很有用的,它只会在没有提供内容的时候被渲染。例如在一个 <submit-button> 组件中:
<button type="submit"> <slot></slot> </button>
我们可能希望这个 <button> 内绝大多数情况下都渲染 “Submit” 文本。为了将 “Submit” 作为默认内容,我们可以将它放在 <slot> 标签内:
<button type="submit"> <slot>Submit</slot> </button>
现在当我在一个父级组件中使用 <submit-button> 并且不提供任何插槽内容时:
<submit-button></submit-button>
默认内容 “Submit” 将会被渲染:
<button type="submit">Submit</button>
但是如果我们提供内容:
<submit-button>Save</submit-button>
则这个提供的内容将会被渲染从而取代后备内容:
<button type="submit">Save</button>
<html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Vue</title> <!-- 使用 CDN 引入 Vue 库 --> <!-- <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> --> <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.7.9/vue.js"></script> </head> <body> <div id="app"> <!-- 使用默认值 --> <submit-button></submit-button> <!-- 使用自定义值 --> <submit-button>Save</submit-button> </div> <script type="text/javascript"> Vue.component('submit-button', { template: ` <p> <button type="submit"> <slot>Submit</slot> </button> </p> ` }); var app = new Vue({ el: "#app", data: {} }); </script> </body> </html>
运行效果图: