如何用自定义组件替换React-Leaflet Popup?

Mic*_*arn 3 javascript reactjs material-ui react-leaflet

我在项目中使用React-Leaflet和(callemall)Material-UI。我正在尝试在<Popup></Popup>React-Leaflet的组件内渲染Material-UI Card组件。我尝试将其作为组件拉入Popup,但是弹出窗口不允许组件正常工作。具体来说,卡组件具有一个按钮元素,可以将其展开,但是不幸的是,弹出窗口不允许我单击它。我确定有一些我需要重写的CSS-y东西,但是我想一个简单的选择就是用我自己的组件替换popup组件,但是我不确定该怎么做。任何见解都非常感激:)

我的代码如下所示:

<Marker position={position}>
    <Popup>
        <MapPopup />
    </Popup>
</Marker>
Run Code Online (Sandbox Code Playgroud)

导入的组件看起来像:(我已经删除了样式和不重要的细节,以使其易于阅读)

<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>
Run Code Online (Sandbox Code Playgroud)

Mic*_*arn 5

长话短说,React-Leaflet和Leaflet为弹出窗口呈现静态html,因此无法在其中呈现动态内容。可以渲染material-ui组件,但是它不是交互式的。您可以通过使用来包装您的组件来完成此操作<MuiThemeProvider></MuiThemeProvider>。您只需要确保将内容设置为完整视图即可,而不要使用扩展器之类的内容。

解决方法如下:

<Popup>
    <MuiThemeProvider muiTheme={getMuiTheme(yourThemeName)}>
        <YourCustomComponent />
    </MuiThemeProvider>
</Popup>
Run Code Online (Sandbox Code Playgroud)