我是一个React新手,我正在开发一个最初使用create-react-app模块创建的React应用,我需要使其适应移动设备(浏览器)...为此,我面临的问题是移动版和Web版的同一组件。 我想知道是否有一种方法可以通过仅具有2个不同的JSX呈现模板并保持相同的代码库来优化两个单独组件的过程。我的意思是根据设备加载特定的JSX并将其放置在render方法中。
任何帮助将不胜感激 预先感谢
答案 0 :(得分:1)
尝试响应库。
您可以基于mediaQuery呈现不同的组件
import MediaQuery from 'react-responsive';
const Example = () => (
<div>
<div>Device Test!</div>
<MediaQuery query="(min-device-width: 1224px)">
<div>You are a desktop or laptop</div>
<MediaQuery query="(min-device-width: 1824px)">
<div>You also have a huge screen</div>
</MediaQuery>
<MediaQuery query="(max-width: 1224px)">
<div>You are sized like a tablet or mobile phone though</div>
</MediaQuery>
</MediaQuery>
<MediaQuery query="(max-device-width: 1224px)">
<div>You are a tablet or mobile phone</div>
</MediaQuery>
<MediaQuery query="(orientation: portrait)">
<div>You are portrait</div>
</MediaQuery>
<MediaQuery query="(orientation: landscape)">
<div>You are landscape</div>
</MediaQuery>
<MediaQuery query="(min-resolution: 2dppx)">
<div>You are retina</div>
</MediaQuery>
</div>
);
答案 1 :(得分:0)
我正在使用Semantic-ui React,并且有一个Responsive组件,您可以呈现广告特定的组件并指定分辨率:例如
<Responsive as={Grid} {...Responsive.onlyMobile} columns='equal' >
//stuff for mobile
</Responsive>
<Responsive as={Grid} {...Responsive.onlyTablet} columns='equal' >
//stuff for tablet
</Responsive>
答案 2 :(得分:0)
您可以使用Bootstrap之类的东西。如果这样不能解决问题。然后,您可以具有一些标志状态,并具有两个返回不同JSX标记的函数。您将必须编写用于检测Mobile的逻辑。
答案 3 :(得分:-1)
其他答案取决于屏幕尺寸(这可能导致误报),此解决方案依赖于检测移动设备
您可以使用react-device-detect
<BrowserView>
<h1> This is rendered only in browser </h1>
</BrowserView>
<MobileView>
<h1> This is rendered only on mobile </h1>
</MobileView>
这可以在<Switch />
答案 4 :(得分:-1)
我们可以使用 Rebass 库,该库也可用于为移动设备,平板电脑和台式机构建响应组件。我们还可以使用样式化的组件,以便我们可以轻松地根据自己的CSS对组件进行样式设置。