现在数据是用useAsyncData()获取的,在服务端渲染,为方便SEO,我没有放在onMounted()里请求数据。
现在是根据window.innerWidth来判断屏幕一行可以排几个列表数据,但是因为是服务端渲染的,所以我获取到的window.innerWidth为0。
const num = computed(() => {
if (typeof window !== "undefined") {
screenWidth.value = window.innerWidth;
}
console.log("屏幕可视宽度:" + screenWidth.value);
if (screenWidth.value <= 1280) {
total.value = 6;
return 3; // 屏幕宽度小于等于 1280px,一列只能显示3张图片
} else if (screenWidth.value <= 1850) {
total.value = 8;
return 4; // 屏幕宽度小于等于 1850px,一列可以显示4张图片
} else {
total.value = 10;
return 5; // 屏幕宽度大于 1850px,一列可以显示5张图片
}
});
console.log("一排个数:" + num.value);
所以现在就是:无论我屏幕可视宽度多大,它一排永远都是显示3个。
但是在浏览器控制台打印出来,显示是对的:(但是因为数据不是在浏览器渲染的所以也不能正确显示一排对应的个数)
想问一下,有什么办法,可以在服务器端获取到屏幕的可视宽度吗??