javascript - react native : state is getting undefined inside useCallBack hook function

标签 javascript react-native react-navigation react-hooks

状态在 useCallBack Hook 内变得未定义,我认为它没有获得状态变量的范围

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 })
}, [])

设置位置我正在获取对象{ “纬度”:37.775030512686214, “液化石油气”:-122.4273883345241, }

控制台中未定义保存位置

最佳答案

您需要提供 selectedLocation 作为依赖项。否则,如果状态发生变化,回调将不会更新。

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

如果您提供一个空数组作为依赖项,则 useCallback 函数将始终具有初始状态并且永远不会更新(selectedLocation)。 这与 useEffect 具有相同的行为

关于javascript - react native : state is getting undefined inside useCallBack hook function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58470456/

相关文章:

ios - React Native Navigator 转换问题

android - adb 调用失败你的路径中有 adb 吗? - react native 错误

react-native - 在嵌套导航器的某些屏幕中禁用父 TabNavigator 的滑动

javascript - bootstrap 下拉菜单不下拉

javascript - 控制 View 模型中默认转换的激活

react-native - react 原生多列 FlatList 插入横幅

reactjs - 在 React Native 中实现深度链接的最佳实践

javascript - 无法在 IE 中的 div 或 span 中隐藏脚本

javascript - 在 setInterval 函数内使用 .call() 传递参数

reactjs - 添加 contentComponent 后,React 抽屉导航变为空白