javascript - 元素类型无效:应为字符串(用于内置组件)或类/函数(用于复合组件)但得到:未定义。- Esri 传单
问题描述
我正在做这个项目,我收到了这个错误。我还没有找到适合我的代码的解决方案。错误=
元素类型无效:应为字符串(用于内置组件)或类/函数(用于复合组件)但得到:未定义。
它还要求我
检查 App 的渲染方法。
这是我的代码。
import { StatusBar } from 'expo-status-bar';
import React, { Component, createRef } from 'react';
import { StyleSheet, Text, View } from 'react-native';
import L from 'leaflet';
import * as ELG from 'esri-leaflet-geocoder';
import { Map, TileLayer } from 'react-leaflet';
class App extends React.Component {
componentDidMount() {
const map = this.leafletMap.leafletElement;
const searchControl = new ELG.Geosearch().addTo(map);
const results = new L.LayerGroup().addTo(map);
searchControl.on("results", function(data) {
results.clearLayers();
for (let i = data.results.length - 1; i >= 0; i--) {
results.addLayer(L.marker(data.results[i].latlng));
}
});
}
render() {
const center = [37.7833, -122.4167];
return (
<Map
style={{ height: "100vh" }}
center={center}
zoom="10"
ref={m => {
this.leafletMap = m;
}}
>
<TileLayer
attribution="© <a href='https://osm.org/copyright'>OpenStreetMap</a> contributors"
url={"http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"}
/>
<div className="pointer" />
</Map>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
});
export default App;
解决方案
查看 React Leaflet 文档似乎没有Map
组件。这意味着Map
您的代码中的值设置为undefined
导致您收到错误的值。
换成Map
,MapContainer
你应该很高兴。
React Leaflet 项目可能选择这个名称是为了不与 JavaScriptMap
类冲突。
推荐阅读
- javascript - react-navigation 如何在 createAppContainer 中嵌套 TapNavigator
- python - 如何使用flask和wtform执行python脚本或从pythons脚本调用函数
- javascript - Dropzone js在提交时验证
- python - unittest 类无法在 python 中导入源模块
- ajax - Ajax call with .net MVC
- python - 对字典中的总值求和的函数
- lua - 循环期间 Lua 更新屏幕
- elasticsearch - 5 分钟内无日志的 Elastalert
- javascript - 将字符串转换为 Angular2 表单验证器类型
- mysql - 连接两个 MySQL 表,其中 tableA.column 的内容是所需 tableB.column 的名称