Компонент карты из библиотеки реагирующих листовок выдает ошибку «Инвариантное нарушение: недопустимый тип элемента» - PullRequest
0 голосов
/ 11 октября 2019

только что обновил react-leaflet версию с 1.9.1 до 2.0.0 и получил странную ошибку:

Uncaught Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.

Check the render method of `Map`.

Мне нужно обновить react-leaflet как минимум до версии 2, чтобы я мог использовать withLeaflet функция для рендеринга векторных плиток внутри react-leaflet. Связанный пост: https://stackoverflow.com/a/53317460/6399631

Файл, который содержит Map компонент в моем проекте;

import React, {Component} from "react";
import classNames from "classnames";
import {Map} from "react-leaflet";

class FdMap extends Component {
    mapRef = (map) => {
        if (map) {
            this.mapLeaflet = map.leafletElement;
            map.leafletElement.scrollWheelZoom.disable();

            map.leafletElement.on("focus", function () {
                map.leafletElement.scrollWheelZoom.enable();
            });

            map.leafletElement.on("blur", function () {
                map.leafletElement.scrollWheelZoom.disable();
            });
        }
    };

    render() {
        const {
          className,
          children
        } = this.props;
        const containerClassName = classNames(
          "fd-map",
          className
        );

        return (
            <Map ref={this.mapRef}
                 {...this.props}
                 className={containerClassName}>
                {children}
            </Map>
        );
    };
}

export default FdMap;

Я использую;

"react": "16.4.1",
"leaflet": "1.3.1"

У вас естьлюбое решение?

1 Ответ

0 голосов
/ 15 октября 2019

Решил эту проблему. Проблема не связана с react-leaflet или props. Похоже, что я использую react-dom версию 16.0.0. Обновил мою react-dom версию до 16.4.1, и теперь моя проблема решена.

...