如何用自定义组件替换 React-Leaflet Popup?
How to replace React-Leaflet Popup with custom component?
我在项目中使用 React-Leaflet 和 (callemall)Material-UI。我正在尝试在 React-Leaflet 的 <Popup></Popup>
组件中渲染 Material-UI Card 组件。我试过将它作为组件拉入 Popup,但弹出窗口不让组件正常工作。具体来说,卡片组件有一个按钮元素可以展开它,但不幸的是,弹出窗口不允许我单击它。我确定我需要覆盖一些 CSS-y 东西,但我认为更简单的选择是用我自己的组件替换弹出组件,但我不确定如何去做所以。非常感谢任何见解:)
我的代码如下所示:
<Marker position={position}>
<Popup>
<MapPopup />
</Popup>
</Marker>
导入的组件如下所示:(我删除了样式和不重要的细节以使其易于阅读)
<Card>
<CardHeader />
<CardMedia
expandable={true}
overlay={
<CardText expandable={true}>
<div>
<p>Text</p>
<Chip>text</Chip>
</div>
<div>
<p>Text</p>
<Chip>Text</Chip>
</div>
</CardText>
}>
<img src="cardMediaImageURL" />
</CardMedia>
</Card>
长话短说,React-Leaflet 和 Leaflet 为弹出窗口呈现静态 html,因此无法在其中呈现动态内容。渲染 material-ui 组件是可能的,但它不会是交互式的。您可以通过使用 <MuiThemeProvider></MuiThemeProvider>
包装您的组件来完成此操作。您只需要确保将内容设置为完整视图,而不是像扩展器那样的内容。
解决方法如下:
<Popup>
<MuiThemeProvider muiTheme={getMuiTheme(yourThemeName)}>
<YourCustomComponent />
</MuiThemeProvider>
</Popup>
我在项目中使用 React-Leaflet 和 (callemall)Material-UI。我正在尝试在 React-Leaflet 的 <Popup></Popup>
组件中渲染 Material-UI Card 组件。我试过将它作为组件拉入 Popup,但弹出窗口不让组件正常工作。具体来说,卡片组件有一个按钮元素可以展开它,但不幸的是,弹出窗口不允许我单击它。我确定我需要覆盖一些 CSS-y 东西,但我认为更简单的选择是用我自己的组件替换弹出组件,但我不确定如何去做所以。非常感谢任何见解:)
我的代码如下所示:
<Marker position={position}>
<Popup>
<MapPopup />
</Popup>
</Marker>
导入的组件如下所示:(我删除了样式和不重要的细节以使其易于阅读)
<Card>
<CardHeader />
<CardMedia
expandable={true}
overlay={
<CardText expandable={true}>
<div>
<p>Text</p>
<Chip>text</Chip>
</div>
<div>
<p>Text</p>
<Chip>Text</Chip>
</div>
</CardText>
}>
<img src="cardMediaImageURL" />
</CardMedia>
</Card>
长话短说,React-Leaflet 和 Leaflet 为弹出窗口呈现静态 html,因此无法在其中呈现动态内容。渲染 material-ui 组件是可能的,但它不会是交互式的。您可以通过使用 <MuiThemeProvider></MuiThemeProvider>
包装您的组件来完成此操作。您只需要确保将内容设置为完整视图,而不是像扩展器那样的内容。
解决方法如下:
<Popup>
<MuiThemeProvider muiTheme={getMuiTheme(yourThemeName)}>
<YourCustomComponent />
</MuiThemeProvider>
</Popup>