react-leaflet-search 组件不呈现
react-leaflet-search component not rendering
当我尝试呈现 react-leaflet-search 时,出现错误。当我尝试使用该错误的解决方案时,反应正在编译但组件似乎没有呈现。
我试过他们的例子simple search。得到同样的错误
TypeError: Cannot read property 'map' of undefined
new ReactLeafletSearch
C:/Users/project/node_modules/react-leaflet-search/lib/React-Leaflet-Search.js:106
103 | });
104 | _this.SearchInfo = null; // searched lat,lng or response from provider
105 |
> 106 | _this.map = context.map || props.leaflet.map;
| ^ 107 | return _this;
108 | }
109 |
我尝试了这个解决方案(来自 react-leaflet-search 页面)
const searchComponent = props => (<ReactLeafletSearch position="topleft" />);
我什至试过这个:
const searchComponent = withLeaflet(ReactLeafletSearch);
这些行绕过了 "error" 但似乎没有组件在渲染。
我的 react-leaflet 地图组件正在加载,缩放 +/- 按钮也在加载,但不是搜索。
这是我正在使用的代码
map example
当然我也在做:
import { ReactLeafletSearch } from "react-leaflet-search";
唯一的区别是在第 31 行之后我添加了我的组件。
31. </Marker>
32. <searchComponent></searchComponent>
33. </Map>
似乎什么都没有渲染。
我期望的结果是一个搜索组件,就像这个中显示的那样
working example
要重现 this 示例,您需要:
安装 leaflet
、react-leaflet
、react-leaflet-search
。
之后,你需要安装 babel-polyfill
,如果你使用 react-leaflet v2,你应该用 withLeaflet
方法包装这个组件。它也被记录为 github issue.
const ReactLeafletSearchComponent = withLeaflet(ReactLeafletSearch);
示例的SimpleExample组件的render方法中:
export default class SimpleExample extends Component {
...
render() {
// here wrap it
const ReactLeafletSearchComponent = withLeaflet(ReactLeafletSearch);
return (
<Map
className="simpleMap"
scrollWheelZoom={true}
bounds={this.state.bounds}
maxZoom={this.state.maxZoom}
maxBounds={this.state.maxBounds}
>
<TileLayer
noWrap={true}
url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
/>
<ReactLeafletSearchComponent
customProvider={this.provider}
position="topleft"
inputPlaceholder="Custom placeholder"
search={[33.100745405144245, 46.48315429687501]}
showMarker={true}
zoom={5}
showPopup={true}
popUp={this.customPopup}
closeResultsOnClick={true}
openSearchOnLoad={true}
// // these searchbounds would limit results to only Turkey.
searchBounds={[
[33.100745405144245, 46.48315429687501],
[44.55916341529184, 24.510498046875]
]}
// providerOptions={{region: 'tr'}}
// default provider OpenStreetMap
// provider="BingMap"
// providerKey="AhkdlcKxeOnNCJ1wRIPmrOXLxtEHDvuWUZhiT4GYfWgfxLthOYXs5lUMqWjQmc27"
/>
</Map>
);
}
}
别忘了添加 map height
并导入 leaflet.css
kboul 的回答帮助我解决了搜索组件无法正确呈现的问题。
const ReactLeafletSearchComponent = withLeaflet(ReactLeafletSearch);
之后您可以使用 "ReactLeafletSearchComponent" 组件将呈现。
我为变量使用了不同的名称。似乎它在一定程度上对名称敏感。 (我完全不明白有多少)但是当我尝试使用像 "searchComp" 这样的名称时它不起作用,但是当我尝试使用 "ReactLeafletSearchComponent" 时它工作得很好。
当我尝试呈现 react-leaflet-search 时,出现错误。当我尝试使用该错误的解决方案时,反应正在编译但组件似乎没有呈现。
我试过他们的例子simple search。得到同样的错误
TypeError: Cannot read property 'map' of undefined
new ReactLeafletSearch
C:/Users/project/node_modules/react-leaflet-search/lib/React-Leaflet-Search.js:106
103 | });
104 | _this.SearchInfo = null; // searched lat,lng or response from provider
105 |
> 106 | _this.map = context.map || props.leaflet.map;
| ^ 107 | return _this;
108 | }
109 |
我尝试了这个解决方案(来自 react-leaflet-search 页面)
const searchComponent = props => (<ReactLeafletSearch position="topleft" />);
我什至试过这个:
const searchComponent = withLeaflet(ReactLeafletSearch);
这些行绕过了 "error" 但似乎没有组件在渲染。
我的 react-leaflet 地图组件正在加载,缩放 +/- 按钮也在加载,但不是搜索。
这是我正在使用的代码 map example 当然我也在做:
import { ReactLeafletSearch } from "react-leaflet-search";
唯一的区别是在第 31 行之后我添加了我的组件。
31. </Marker>
32. <searchComponent></searchComponent>
33. </Map>
似乎什么都没有渲染。
我期望的结果是一个搜索组件,就像这个中显示的那样 working example
要重现 this 示例,您需要:
安装 leaflet
、react-leaflet
、react-leaflet-search
。
之后,你需要安装 babel-polyfill
,如果你使用 react-leaflet v2,你应该用 withLeaflet
方法包装这个组件。它也被记录为 github issue.
const ReactLeafletSearchComponent = withLeaflet(ReactLeafletSearch);
示例的SimpleExample组件的render方法中:
export default class SimpleExample extends Component {
...
render() {
// here wrap it
const ReactLeafletSearchComponent = withLeaflet(ReactLeafletSearch);
return (
<Map
className="simpleMap"
scrollWheelZoom={true}
bounds={this.state.bounds}
maxZoom={this.state.maxZoom}
maxBounds={this.state.maxBounds}
>
<TileLayer
noWrap={true}
url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
/>
<ReactLeafletSearchComponent
customProvider={this.provider}
position="topleft"
inputPlaceholder="Custom placeholder"
search={[33.100745405144245, 46.48315429687501]}
showMarker={true}
zoom={5}
showPopup={true}
popUp={this.customPopup}
closeResultsOnClick={true}
openSearchOnLoad={true}
// // these searchbounds would limit results to only Turkey.
searchBounds={[
[33.100745405144245, 46.48315429687501],
[44.55916341529184, 24.510498046875]
]}
// providerOptions={{region: 'tr'}}
// default provider OpenStreetMap
// provider="BingMap"
// providerKey="AhkdlcKxeOnNCJ1wRIPmrOXLxtEHDvuWUZhiT4GYfWgfxLthOYXs5lUMqWjQmc27"
/>
</Map>
);
}
}
别忘了添加 map height
并导入 leaflet.css
kboul 的回答帮助我解决了搜索组件无法正确呈现的问题。
const ReactLeafletSearchComponent = withLeaflet(ReactLeafletSearch);
之后您可以使用 "ReactLeafletSearchComponent" 组件将呈现。
我为变量使用了不同的名称。似乎它在一定程度上对名称敏感。 (我完全不明白有多少)但是当我尝试使用像 "searchComp" 这样的名称时它不起作用,但是当我尝试使用 "ReactLeafletSearchComponent" 时它工作得很好。