亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

不能在 React Native 中只調用一次函數?

不能在 React Native 中只調用一次函數?

拉莫斯之舞 2022-11-03 09:54:43
我有一個帶有 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 調用。我錯過了什么?
查看完整描述

1 回答

?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

是的 -handleRegistration()現在設置為在每次重新渲染時運行。如果你使用useEffect了 ,你可能沒有包含依賴數組(我稍后會告訴你),這也導致它在每次重新渲染時運行。嘗試這個:


useEffect(() => {

  handleRegistration()

}, [])

注意中的空數組useEffect。這告訴 react 只運行一次。你可以省略它(就像你可能已經做過的那樣),它告訴 react 在每次組件重新渲染時運行它?;蛘吣梢詫祩鬟f到數組中,當這些特定參數發生變化時,反應將觀察并運行。


查看完整回答
反對 回復 2022-11-03
  • 1 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號