我正在做一个结合 React 和 Leaflet 的项目,但我必须说我在语义方面遇到了一些困难。
由于大多数东西都是由 Leaflet 直接管理的,我不知道将 Leaflet 地图实例添加为 React 组件中的状态是否有意义。
使用 Leaflet 创建标记时存在同样的问题,因为它不返回任何内容,因此我实际上没有任何内容要渲染。逻辑本身对我来说似乎很模糊。
这是我开始制作的。它正在工作,但我觉得我正在编写糟糕的代码并且缺少概念。
/** @jsx React.DOM */
/* DOING ALL THE REQUIRE */
var Utils = require('../core/utils.js');
var Livemap = React.createClass({
uid: function() {
var uid = 0;
return function(){
return uid++;
};
},
getInitialState: function() {
return {
uid: this.uid()
}
},
componentDidMount: function() {
var map = L.map('map-' + this.state.uid, {
minZoom: 2,
maxZoom: 20,
layers: [L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {attribution: '© <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>'})],
attributionControl: false,
});
map.fitWorld();
return this.setState({
map: map
});
},
render: function() {
return (
<div className='map' id={'map-'+this.state.uid}></div>
);
}
});
(function(){
Utils.documentReady(function(){
React.render(
<Livemap />,
document.body
)
});
})();
所以我的问题是:
- 这个样本看起来合法吗?
- 您将如何处理添加标记和管理其事件的逻辑?