reactjs - React Mapbox 在路由之间持久化映射
问题描述
最近,我一直在尝试实现一个 MapBox 地图,它在我的 NextJS 页面上的多个路线之间共享,但是当导航例如从foo.com
使用foo.com/bar
时router.push("/${id}", undefined, { shallow: true });
(出于测试目的,这些路线是相同的并且共享相同的<Map/>
组件),地图重新-renders 导致烦人的 tile-re-render 大约需要 2 秒。
我的问题是,有没有办法<Map/>
在路由之间保留组件而不需要重新渲染它?对于库,我尝试同时使用mapbox-gl
和react-mapbox-gl
,对于框架,我使用 React 和 NextJS。
这是我的<Map/>
组件实现
const MapBox = ReactMapboxGl({
accessToken: "private stuff",
});
export const Map = () => {
return (
<MapBox
style="mapbox://styles/mapbox/streets-v9"
containerStyle={{
height: "100vh",
width: "100vw",
}}
></MapBox>
);
};
这是我的路由设置:
my-project/
├─ pages/
│ ├─ [id]/
│ │ ├─ index.tsx < Contains the <Map/> component
│ ├─ index.tsx < Contains the <Map/> component
│ ├─ _app.tsx
解决方案
推荐阅读
- reactjs - Nextjs 基于后端返回的动态页面
- php - 如何在 OAuth 2.0 PHP 服务器中设置 user_id?
- css - 调整浏览器窗口大小时如何调整背景图像大小?
- python-3.x - 向具有不同 IP 和相同端口的多个 TCP 客户端发送相同的命令
- javascript - 音频在桌面浏览器上播放,但在移动浏览器上不播放
- kubernetes - 如何用 kops 指定区域 ID?
- c# - 从多个远程 Windows 服务器聚合日志文件的最佳方法
- python - 未使用的导入语句 - 警告消息
- c# - 考虑到重复项,如何从 linq 中的两个数组中获取缺失值
- python-3.x - 尽管给出了输出,但 Python 代码给出了 IndexError