Closed xfishernet closed 6 years ago
Привет, маленькое демо с репродукцией ошибки очень помогло бы понять в чем может быть причина
https://codesandbox.io/s/21145v40z0
сначала переходим на ссылку /map
потом кликаем на TEST ссылку
я конечно могу в событии сделать проверку if (!map) return; там где ошибка, но хотелось бы узнать, почему именно то событие выполняется, когда перехожу по ссылке.
@xfishernet react-yandex-maps will call the instanceRef callback with the YandexMap Object instance when the component mounts, and call it with null when it unmounts. Тут конечно @gribnoysup подробнее пояснит. Но просто надо делать доп проверки на существование https://codesandbox.io/s/34lr1w48r1
@xfishernet как правильно заметил @mmarkelov происходит это потому что instanceRef
коллбэк будет вызван c аргументом null
, когда React вызывает коллбэк componentWillUnmount
. Это поведение повторяет поведение callback refs
в React:
React will call the ref callback with the DOM element when the component mounts, and call it with null when it unmounts.
https://reactjs.org/docs/refs-and-the-dom.html#callback-refs
Я закрою issue, но если у тебя остались вопросы, спрашивай
Хочу выразить огромную благодарность вам. Но я хотел спосить об одной ошибке которая выходит у меня:
Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method. in YandexMapWrap
Я пробывал исправить это так:
class YandexMapWrap extends React.Component {
_isMounted = false;
componentDidMount() {
this._isMounted = true;
}
componentWillUnmount() {
this._isMounted = false;
}
}
и каждый раз проверяю на это когда вызываю this.setState()
но похожо что это не помогает.
Не могли вы подсказать почему так выходит и как исправить это ?
Компонент как то странно себя с Route. Если перейти на карту, потом на какой то другой маршрут, потом опять на карту, то будет ошибка:
at Map.update (Map.js:114) at Map.componentWillReceiveProps (Map.js:147) at callComponentWillReceiveProps (react-dom.development.js:11527)