【发布时间】:2020-07-08 02:05:20
【问题描述】:
我在使用 React Native 和 Expo 获取用户位置时进行了条件渲染。单击按钮以显示微调器后,我正在更改状态,但是由于某种原因,我的状态变量始终为 false。我了解 useEffect 钩子,但是我认为我不需要在任何特定的生命周期中更改变量。这是正确的推理吗?起初我认为这是由于函数的异步性质,但它似乎不太可能。
状态初始化
const [loading, toggleLoading] = useState(false);
onClick 代码
{props.location === null ? (
<Button onPress={getLocationAsync} mode="contained">
Get Location
</Button>
) : loading === true ? (
<Button mode="contained">
<ActivityIndicator />
</Button>
) : (
<Button mode="outlined">Received</Button>
)}
getLocationAsync 的代码
const getLocationAsync = async () => {
toggleLoading(true);
let { status } = await Permissions.askAsync(Permissions.LOCATION);
if (status !== "granted") { }
let location = await Location.getCurrentPositionAsync();
toggleLoading(false);
};
在任何地方记录状态总是会导致加载为假。在这种情况下,我真的需要类似 useEffect 的东西吗?
【问题讨论】:
标签: javascript reactjs react-native expo