Closed kumold closed 2 years ago
Биндиги уже работают на React18 https://codesandbox.io/s/pbe-react-yandex-maps-react-18-xe2o98?file=/src/index.js
В версии с typescript ругает что у YMaps нет опции children.
https://codesandbox.io/s/typescript-forked-q2lt5w?file=/src/index.tsx
У себя добавил children для проверки, но отваливается уже в других местах.
Собрал примерный проект с 18 реактом. https://github.com/kumold/react-yandex-maps-example
Там можно посмотреть, как отваливается карта.
@kumold карта работает, просто контейнер должен иметь размеры) https://codesandbox.io/s/pbe-react-yandex-maps-placemark-y0lq62?file=/src/App.tsx
Благодарю за быстрые ответы. Отваливается оказывается при StrictMode. Т.е. если обернуть App в React.StrictMode.
Хм... в примере от вас работает с StrictMode, но в моем примерном репозиторие отваливается.
То же самое - проекты со StrictMode
(кое-как) работают на codesandbox, но не работают локально(а также на vercel).
https://codesandbox.io/s/agitated-khayyam-lnstj8?file=/src/App.ts Здесь можно увидеть баг с двойным отображением маркера - нажимаем на кнопку в строгом режиме - видим два маркера, без строгого режима - ожидаемо один.
При этом этот же проект запущенный локально вообще не работает:
Uncaught TypeError: t is not a constructor
at Function.mountObject (BaseGeoObject.tsx:61:1)
at q.componentDidMount (BaseGeoObject.tsx:34:1)
...
Карта без маркера ошибку не выбрасывает, только с маркером. Хак, который мне удалось придумать, чтобы все-таки заставить маркер появиться - выводить его по setTimeout на уже загрузившуюся карту:
const [showPlacemark, setShowPlacemark] = useState(false)
useEffect(() => {
setTimeout(() => setShowPlacemark(true), 2000)
}, [])
...
{showPlacemark && (
<Placemark geometry={[lat + offset[0], lon + offset[1]]} />
)}
Причем с маленькой задержкой тоже ошибка. Не знаю, насколько эта информация будет полезна, но решил добавить :)
В версии react-yandex-maps
все как бы работает, но рисует две карты. А в версии @pbe/react-yandex-maps
все как вы описали.
То же самое - проекты со
StrictMode
(кое-как) работают на codesandbox, но не работают локально(а также на vercel).https://codesandbox.io/s/agitated-khayyam-lnstj8?file=/src/App.ts Здесь можно увидеть баг с двойным отображением маркера - нажимаем на кнопку в строгом режиме - видим два маркера, без строгого режима - ожидаемо один.
При этом этот же проект запущенный локально вообще не работает:
Uncaught TypeError: t is not a constructor at Function.mountObject (BaseGeoObject.tsx:61:1) at q.componentDidMount (BaseGeoObject.tsx:34:1) ...
Карта без маркера ошибку не выбрасывает, только с маркером. Хак, который мне удалось придумать, чтобы все-таки заставить маркер появиться - выводить его по setTimeout на уже загрузившуюся карту:
const [showPlacemark, setShowPlacemark] = useState(false) useEffect(() => { setTimeout(() => setShowPlacemark(true), 2000) }, []) ... {showPlacemark && ( <Placemark geometry={[lat + offset[0], lon + offset[1]]} /> )}
Причем с маленькой задержкой тоже ошибка. Не знаю, насколько эта информация будет полезна, но решил добавить :)
@kumold @turtlecrab пофикшено, сейчас должно и на локалке работать) https://codesandbox.io/s/nostalgic-lehmann-f0o63o?file=/src/App.tsx
У меня работает! Спасибо!
Будет ли библиотека обновляться до 18го реакта?