首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >呈现反应组件内弹出的反应-传单绘制层上的反应-传单。

呈现反应组件内弹出的反应-传单绘制层上的反应-传单。
EN

Stack Overflow用户
提问于 2017-03-20 02:13:21
回答 1查看 9.5K关注 0票数 7

我试图在一个由react-leaflet-draw创建的层中呈现一些反应组件。

这是我的尝试:

代码语言:javascript
复制
_onCreate(e) {
        var layer = e.layer
        layer.bindPopup(
            <Content>
                <Label>Flower Name</Label>
                <Input type="text" placeholder="Flower Name"/>
                <Label>Flower Index</Label>
                <Input type="number" placeholder="Flower Index"/>
                <Label>Flower Radius</Label>
                <Input type="number" placeholder="Flower Radius"/>
                <Button color="isSuccess" >Add Flower</Button>
            </Content>
        )
    }

组件由反应球提供。

但是我尝试这种方法,我得到了以下错误:Uncaught TypeError: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'

如果我把内容变成一个简单的字符串,我会得到一个简单的HTML字段和一个按钮,但是不能访问外部函数,也不能访问实际的Bulma组件。

实际上,我希望能够在数据库中保存新的形状。

从一个简短的在线搜索来看,这似乎是react-leaflet的一个限制,但我想先在这里检查一下。

另外,这是为新创建的形状设置弹出窗口的最佳方法吗?我很难将常规的leaflet-draw方法转换为react-leaflet-draw

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-20 22:40:25

有可能有反应组件内的反应-传单弹出。在您的示例中,您使用的是传单的API,而应该使用的是react传单的组件。请参阅单击地图后显示弹出窗口的以下示例:

代码语言:javascript
复制
const React = window.React;
const { Map, TileLayer, Marker, Popup } = window.ReactLeaflet;

let numMapClicks = 0

class SimpleExample extends React.Component {
    state = {}

  addPopup = (e) => {
    this.setState({
      popup: { 
        key: numMapClicks++,
        position: e.latlng
      }
    })
  }

  handleClick = (e) => {
    alert('clicked')
  }

  render() {
    const {popup} = this.state
    return (
      <Map 
        center={[51.505, -0.09]} 
        onClick={this.addPopup}
        zoom={13} 
        >
        <TileLayer
          attribution='&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
          url='http://{s}.tile.osm.org/{z}/{x}/{y}.png'
        />
        {popup &&
          <Popup 
            key={`popup-${popup.key}`}
            position={popup.position}
            >
            <div>
              <p>A pretty CSS3 popup. <br/> Easily customizable.</p>
              <button onClick={this.handleClick}>Click Me!</button>
            </div>
          </Popup>
        }
      </Map>
    );
  }
}

window.ReactDOM.render(<SimpleExample />, document.getElementById('container'));

下面是一个要演示的小提琴

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42894803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档