Деструктуризация массива, в отличие от деструктурирования объектов, не сохраняет имен переменных (потому что у массивов нет имен для ключей, у них есть номера). Поэтому, когда вы делаете:
const [addMarker] = useMarkers();
Вы присваиваете markers
для addMarker
:
return [markers, addMarker];
|
|
v
const [addMarker] = useMarkers();
Путаница возникает из-за того, что есть две отдельные переменные, которые называются addMarker
это относится к разным вещам.
Чтобы исправить это, присвойте второму элементу addMarker
:
const [ ignored, addMarker ] = useMarkers();
Или используйте деструктуризацию объекта:
return { markers, addMarker }
// then later:
const { addMarker } = useMarkers();