以下是一个简单的demo,来模拟vue3通过h()和render()创建dom元素。
说明,由于事件情景中,父元素.content是动态创建的,所以我不能直接在template中写我要的元素,才通过h()和render()创建。
问题:我希望h()和render()创建的元素,可以响应变量isMyBtn,从而实现样式上的变化。
例如当isMyBtn为true时,类和内容分别为mybtn、我的按钮,反之是yourbtn、你的按钮。
注意,isMyBtn变量在元素创建后仍会有变化,元素要响应isMyBtn后续变化。
这种需求如果是自己在template中写元素,通过三元表达式或v-if可以轻松实现,但通过h()和render()创建的元素我不知道应该怎么实现。
请各位大佬指教,感谢。
[JavaScript] 纯文本查看 复制代码 <template>
<div class="content">
</div>
</template>
<script setup>
import { onMounted, ref, h, render } from 'vue';
const isMyBtn = ref(true)
onMounted(() => {
console.log('do render');
const domParent = document.getElementsByClassName('content')[0];
const domSon = h('button', { class: isMyBtn ? 'mybtn' : 'yourbtn' }, isMyBtn ? '我的按钮' : '你的按钮');
render(domSon, domParent);
})
</script> |