React Native: состояние становится неопределенным внутри подключаемой функции useCallBack - PullRequest
0 голосов
/ 20 октября 2019

Состояние становится неопределенным внутри перехватчика useCallBack. Я думаю, что он не получает область видимости для переменной состояния

const [selectedLocation, setSelectedLocation] = useState()
const selectLocationHandler = (event) => {
    setSelectedLocation({
        lat: event.nativeEvent.coordinate.latitude,
        lng: event.nativeEvent.coordinate.longitude
    })
    console.log('set location', selectedLocation)
}

const saveLocationPickerHandler = useCallback(() => {
    console.log('saveLocation', selectedLocation)
    if (!selectedLocation) {
        return;
    }
    props.navigation.navigate('DeliveryLocation', { pickedLocation: selectedLocation })
}, [])

установить местоположение Iam get Object {"lat": 37.775030512686214, "lng": -122.4273883345241,}

где savelocation не определено в консоли

1 Ответ

1 голос
/ 20 октября 2019

Вы должны предоставить selectedLocation в качестве зависимости. В противном случае обратный вызов не будет обновляться при изменении состояния.

const saveLocationPickerHandler = useCallback(() => {
    console.log('saveLocation', selectedLocation)
    if (!selectedLocation) {
        return;
    }
    props.navigation.navigate('DeliveryLocation', { pickedLocation: selectedLocation })
}, [selectedLocation])

Если вы предоставите пустой массив в качестве зависимости, функция useCallback всегда будет иметь начальное состояние и никогда не будет обновляться (selectedLocation). Это то же поведение, которое useEffect имеет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...