gpt4 book ai didi

javascript - 不能在 React Native 中只调用一次函数?

转载 作者:行者123 更新时间:2023-12-02 16:35:58 25 4
gpt4 key购买 nike

我有一个带有 GraphQL 服务器的 React Native 项目。我正在使用 Apollo Client 从我的 API 获取数据。我创建了这个简单的组件,它从路由参数(形成逐步注册)中获取注册所需的所有数据,并进行修改以创建新商店。

export default function AuthRegisterStore({ navigation, route }) {
const [
register,
{ loading: validating, error: validationError, data: returnData },
] = useMutation(REGISTER, { onError: (e) => Alert.alert(String(e)) });

const handleRegistration = () => {
register({
variables: {
username: route.params.username,
password: route.params.password,
latitude: route.params.latitude,
longitude: route.params.longitude,
},
});
};

handleRegistration()

if (validating) {
return <Loader />;
}

if (validationError) {
return (
<View style={styles.container}>
<Text>Error</Text>
</View>
);
}

if (returnData) {
navigation.navigate("Login", { message: "Te logueaste!" });
}

return null;
}

const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: "center",
alignItems: "center",
},
});

问题是 handleRegistration() 函数被一次又一次地调用,导致死循环。我试过使用 useEffect() 但由于某种原因它不会调用 API。我错过了什么?

最佳答案

是 - handleRegistration() 设置为在每次重新渲染时立即运行。如果您使用了 useEffect,您可能没有包含依赖项数组(我稍后会向您展示),这也会导致它在每次重新渲染时运行。试试这个:

useEffect(() => {
handleRegistration()
}, [])

注意 useEffect 中的空数组。这告诉 React 只运行一次。你可以省略它(就像你可能已经做过的那样),它告诉 React 在每次组件重新渲染时运行它。或者您可以将参数传递到数组中,当这些特定参数发生变化时,React 将监视并运行。

关于javascript - 不能在 React Native 中只调用一次函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62735585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com