我想根据屏幕大小更改<p>
标记的文本。我看到了两种方法:
1.将文本创建为:
<p>
<span className="one">text one</span>
<span className="two">text two</span>
</p>
并使用媒体查询修改CSS,例如:
@media (max-width: 481px) {
.one {
display: none;
}
.two {
display: inline;
}
}
另一个用于使用组件内的实际React/JS:
let innerText;
React.useEffect(() => {
if (window.innerWidth <= 481) {
innerText = 'text one';
} else {
innerText = 'text two';
}
}, [window.innerWidth]);
return (
<p>{innerText}</p>
);
这些方法中哪一种对于此用例性能更高?哪一种通常被认为是最佳实践?是否有一些我忽略的方法是首选的?我担心使用React方法不会在更改屏幕大小时触发数百次重新渲染,但我也担心不必要地渲染两个跨度。
1条答案
按热度按时间moiiocjp1#
无需CSS
您可以重用这个钩子来设置不同的元素/类。