Vue3+vite,使用的是setup语法糖,动态获取宽度值,在页面初次加载的时候,可以获取到最大值,但是点击刷新按钮之后,就无法获取到最大值,点击刷新按钮之后titleColNodes就为空了
<template>
<div class="check-list-container" ref="checkListContainerRef">
<template v-for="(item, index) in checkListData">
<div class="list-row">
<div class="list-col index">
<span class="list-col-text index" v-html="index+1"/>
</div>
<div class="list-col title">
<span class="list-col-text title" v-html="item.title"/>
</div>
<div class="list-col date">
<span class="list-col-text date" v-html="item.date"/>
</div>
</div>
</template>
</div>
</template>
<script setup>
import {ref, defineProps, onMounted, nextTick, watch} from "vue";
onMounted(() => {
console.log("----------")
nextTick(() => {
setCheckListStyle();
});
})
const props = defineProps({
checkListData: {
type: Array,
default: () => []
}
})
const checkListContainerRef = ref();
const setCheckListStyle = () => {
const checkListContainerNode = checkListContainerRef.value;
const titleColNodes = checkListContainerNode.getElementsByClassName("list-col title");
console.log(titleColNodes);
let maxWidth = 0;
for (let titleNode of titleColNodes) {
console.log(titleNode)
const offsetWidth = titleNode.offsetWidth;
console.log("offsetWidth",offsetWidth)
maxWidth = Math.max(maxWidth, offsetWidth);
}
console.log(maxWidth)
}
</script>