Semantic-UI-React 响应式组件渲染元素,尽管有 minWidth/maxWidth prop
Semantic-UI-React Responsive component renders element in spite of minWidth/maxWidth prop
我有一个组件,我想根据屏幕尺寸渲染不同的组件。如果我在移动视图上重新加载页面,一切正常,NavBarMobile 被渲染而 NavbarDesktop 没有。
如果我在桌面视图中重新加载页面,则会再次呈现我的 NavbarMobile 而不是 NavBarDesktop。
如果我开始将屏幕大小调整为移动设备并返回到桌面视图,NavBarDesktop 会正确呈现。
所以,问题是在桌面视图中首次加载页面,如何解决?
const { mainAppComponents, } = this.props
const { visible, } = this.state
return (
<Fragment>
<Responsive maxWidth={767}>
<NavBarMobile
onPusherClick={this.handlePusher}
onToggle={this.handleToggle}
rightItems={rightItems}
visible={visible}
>
{mainAppComponents.header}
{mainAppComponents.routes}
</NavBarMobile>
</Responsive>
<Responsive minWidth={768}>
<NavBarDesktop rightItems={rightItems}>{mainAppComponents.header}</NavBarDesktop>
{mainAppComponents.routes}
</Responsive>
</Fragment>
)
Igor-Vuk,我整理了一个快速的 codesandbox 示例,只是为了确保您尝试实现 min/max 宽度道具的方式没有问题。从这个例子中可以看出,它们确实按预期工作。 https://codesandbox.io/s/98pk46l7vr
没有看到您的组件或应用程序的其余部分,问题可能是由于您的路由器中的某些内容引起的。我建议您尝试删除作为 Responsive
组件的 children 返回的其他一些组件,以查看它是否按预期开始工作(就像在我的 codesandbox 示例中一样)。如果有效,那么您就知道问题出在 children 中的某处。如果它不起作用,那么您的应用中存在更大的问题。
如果您使用的是 SSR,则在初始加载时会使用不了解视口的 Responsive
组件来呈现和提供内容。因此,您可能还需要添加一个 CSS 媒体查询。
我有一个组件,我想根据屏幕尺寸渲染不同的组件。如果我在移动视图上重新加载页面,一切正常,NavBarMobile 被渲染而 NavbarDesktop 没有。
如果我在桌面视图中重新加载页面,则会再次呈现我的 NavbarMobile 而不是 NavBarDesktop。
如果我开始将屏幕大小调整为移动设备并返回到桌面视图,NavBarDesktop 会正确呈现。
所以,问题是在桌面视图中首次加载页面,如何解决?
const { mainAppComponents, } = this.props
const { visible, } = this.state
return (
<Fragment>
<Responsive maxWidth={767}>
<NavBarMobile
onPusherClick={this.handlePusher}
onToggle={this.handleToggle}
rightItems={rightItems}
visible={visible}
>
{mainAppComponents.header}
{mainAppComponents.routes}
</NavBarMobile>
</Responsive>
<Responsive minWidth={768}>
<NavBarDesktop rightItems={rightItems}>{mainAppComponents.header}</NavBarDesktop>
{mainAppComponents.routes}
</Responsive>
</Fragment>
)
Igor-Vuk,我整理了一个快速的 codesandbox 示例,只是为了确保您尝试实现 min/max 宽度道具的方式没有问题。从这个例子中可以看出,它们确实按预期工作。 https://codesandbox.io/s/98pk46l7vr
没有看到您的组件或应用程序的其余部分,问题可能是由于您的路由器中的某些内容引起的。我建议您尝试删除作为 Responsive
组件的 children 返回的其他一些组件,以查看它是否按预期开始工作(就像在我的 codesandbox 示例中一样)。如果有效,那么您就知道问题出在 children 中的某处。如果它不起作用,那么您的应用中存在更大的问题。
如果您使用的是 SSR,则在初始加载时会使用不了解视口的 Responsive
组件来呈现和提供内容。因此,您可能还需要添加一个 CSS 媒体查询。