javascript - react 和传单

标签 javascript reactjs leaflet mapbox

我正在尝试在我的 React 应用程序中使用 Leaflet。我遇到了一个问题。 Leaflet.js 要求 div 组件在启动 map 时预先存在。 React 在呈现组件之前不会“创建” div,因此传单会抛出错误。无论出于何种原因,getDOMNode() 和 findDOMNode() 都返回“不是函数”。

代码:

import React from 'react';
import {render} from 'react-dom';
import L from 'leaflet';

...稍后

export default class Mapbox extends React.Component {
  render() {
    var map = L.map('map').setView([51.505, -0.09], 13);

L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
    attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);

    return (

      <div id="map">
    <h1>hi</h1>
    </div>
    );

这将返回“未找到 map 容器”的错误。

谢谢。

最佳答案

您可以在 componentDidMount 中初始化 map

class Mapbox extends React.Component {
  componentDidMount() {
    this.map();
  }

  map() {
    var map = L.map('map').setView([51.505, -0.09], 13);

    L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
      attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
    }).addTo(map);
  }

  render() {
    return <div id="map">xx</div>  
  }
}

Example

关于javascript - react 和传单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37661136/

相关文章:

javascript - rails 部分渲染 html 不运行 javascript

javascript - 如何在 d3v4 中的两点之间绘制箭头?

javascript - 定义具有嵌套函数和默认函数的函数

javascript - 为什么 if/else 语句后不使用分号?

input - Shiny 传单选择输入代码

javascript - Redux 异步 Action 测试的目的是什么?

reactjs - 将 React ES6 迁移到 TypeScript : import statements don't work

javascript - 使用 Chart js 插件创建类似圆环图的圆弧

javascript - 使用 JavaScript 打开/关闭传单标记弹出窗口

javascript - Leaflet JS - 居中和缩放功能组