Слияние кода завершено, страница обновится автоматически
<template>
<div>
<NuxtLayout :name="layout">
<NuxtPage />
</NuxtLayout>
</div>
</template>
<script setup>
import { ref, onMounted, onBeforeMount } from "vue";
import { deviceType } from "~/utils/deviceType";
import { throttle } from "~/utils/tools";
//如果是server
if (process.server) {
const headers = useRequestHeaders();
let layout = deviceType(headers["user-agent"]).type == "pc" ? "default" : "mobile";
useState("layout", () => layout);
}
let layout = useState("layout");
// 监听屏幕变化
onMounted(() => {
window.onresize = throttle(() => {
let w = window.innerWidth;
if (w <= 690) { // 断点
useState("layout").value = "mobile";
} else {
useState("layout").value = "default";
}
}, 100);
// 如果你希望根据屏幕宽度做首次渲染,请加上下面的代码( 不推荐 )
// window.dispatchEvent( new Event( "resize" ) );
});
</script>
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )