【发布时间】:2023-01-16 04:28:48
【问题描述】:
我有两个独立的组件,一个用于移动设备,另一个用于桌面。一次只能显示一个组件,具体取决于用户浏览器窗口的宽度。这是我的浓缩版:
<script>
let innerWidth
</script>
<svelte:window bind:innerWidth />
<p>
Inner Width: {innerWidth}
</p>
{#if innerWidth > 800}
Desktop Content
{:else}
Mobile Content
{/if}
我注意到当我加载页面时,{innerWidth} 迅速从 undefined 切换到适当的值。对于桌面用户来说,这是一个问题,因为在评估{#if innerWidth > 800}时,Svelte 有innerWidth = undefined,所以显示的是 Mobile 内容。
有趣的是,只有当我直接加载页面时才会出现这个问题。如果我在 /subpage 上有这个功能,如果我访问 /index 然后访问 /subpage,预期的功能就会起作用。
有没有办法在初始页面加载时返回适当的值而不识别undefined?我想避免使用 CSS 媒体查询,但这是最后的手段。
【问题讨论】: