gpt4 book ai didi

javascript - 如何在创建组件之前更改 VueJS 的 内容

转载 作者:行者123 更新时间:2023-11-30 20:11:33 25 4
gpt4 key购买 nike

我有一个 VueJS 组件,

comp.vue:

<template>
<div>
<slot></slot>
</div>
</template>

<script>
export default {
data () {
return {

}
},
}
</script>

我称这个 Vue 组件就像任何其他组件一样:

...
<comp>as a title</comp>
<comp>as a paragraph</comp>
...

我想在渲染之前更改 comp.vue 的插槽,这样如果插槽包含单词“title”,那么插槽将包含在 <h1> 中。 , 导致

<h1>as a title</h1>

如果插槽包含“段落”,则插槽将包含在 <p> 中, 导致

<p>as a paragraph</p>

如何在渲染之前更改组件插槽内容?

最佳答案

如果您使用字符串 prop 而不是插槽,这会更容易实现,但是如果内容很长,那么在模板中使用该组件可能会变得困惑。

如果您手动编写渲染函数,那么您可以更好地控制组件的渲染方式:

export default {
render(h) {
const slot = this.$slots.default[0]

return /title/i.test(slot.text)
? h('h1', [slot])
: /paragraph/i.test(slot.text)
? h('p', [slot])
: slot
}
}

上述渲染函数仅在默认插槽只有一个文本子项的情况下有效(我不知道您的要求超出了问题中提出的范围)。

关于javascript - 如何在创建组件之前更改 VueJS 的 <slot> 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52360350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com