Quantcast
Channel: Active questions tagged react-native+typescript - Stack Overflow
Viewing all articles
Browse latest Browse all 6212

Form Submission Works Only Once

$
0
0

In my code, I run a graph query and then call the showUsers function inside getUserId. This function displays all the users in a styled box.

Once I enter an email and submit the form by hitting the button, I see the rendered object from showUsers. However, after that, I can no longer click on the button and submit the form with a new email input. How can I fix this?

Code:

export const Page: React.FunctionComponent<PageProps> = ({  toggleShowPage,  showAddFriendEmailPage,}) => {  const initialValues: FormValues = {    email: '',  };  const [errorMessage, setErrorMessage] = useState('');  const [userData, setUserData] = useState<UsersLazyQueryHookResult>('');  const [numberOfUsers, setNumberOfUsers] = useState('');  const validationSchema = emailValidationSchema;  useEffect(() => {    setUserData(userData);    setNumberOfUsers(numberOfUsers);  }, [userData, numberOfUsers]);  const showAlert = () => {    Alert.alert('Friend Added');  };  useEffect(() => {    if (showAddFriendEmailPage) return;    initialValues.email = '';  }, [showAddFriendEmailPage]);  const _onLoadUserError = React.useCallback((error: ApolloError) => {    setErrorMessage(error.message);    Alert.alert('Unable to Add Friend');  }, []);  const [    createUserRelationMutation,    {      data: addingFriendData,      loading: addingFriendLoading,      error: addingFriendError,      called: isMutationCalled,    },  ] = useCreateUserRelationMutation({    onCompleted: (data: CreateUserRelationMutationResult) => {      showAlert();    },  });   const showUsers = React.useCallback(     (data: UsersLazyQueryHookResult, numberOfUsers: Number) => {       for (var i = 0; i < numberOfUsers; i++) {        console.log('Number of Users in Loop: ', numberOfUsers);         const userId = data.users.nodes[i].id;         const userName = ((data.users.nodes[i].firstName).concat('')).concat(data.users.nodes[i].lastName);         console.log('Whats the Id', userId);         console.log('UserName', userName);         console.log('Loop');         return(<View style={styles.friends}><View style={styles.item}><Text>{userName}</Text></View></View>         )       }           },     [createUserRelationMutation],   );  const addFriend = React.useCallback(    (id: Number) => {      console.log('Whats the Id', id);      createUserRelationMutation({        variables: {          input: { relatedUserId: id, type: RelationType.Friend, userId: 7 },        },      });    },    [createUserRelationMutation],  );  const getFriendId = React.useCallback(    (data: UsersLazyQueryHookResult) => {      if (data) {        if (data.users.nodes.length == 0) {          setErrorMessage('User Not Found');          Alert.alert('User Not Found');        } else {          setUserData(data);          setNumberOfUsers(data.users.nodes.length);          showUsers(data, Number(numberOfUsers));          addFriend(Number(data.users.nodes[0].id));        }      }    },    [addFriend],  );  const [loadUsers] = useUsersLazyQuery({    onCompleted: getFriendId,    onError: _onLoadUserError,  });  const handleSubmitForm = React.useCallback(    (values: FormValues, helpers: FormikHelpers<FormValues>) => {      console.log('Submitted');      loadUsers({        variables: {          where: { email: values.email },        },      });      values.email = '';    },    [loadUsers],  );  return (<Modal      visible={showAddFriendEmailPage}      animationType="slide"      transparent={true}><SafeAreaView><View style={styles.container}><View style={styles.searchTopContainer}><Formik                initialValues={initialValues}                onSubmit={handleSubmitForm}                validationSchema={validationSchema}>                {({ handleChange, handleBlur, handleSubmit, values }) => (<View style={styles.searchFieldContainer}><View style={styles.form}><FieldInput                        handleChange={handleChange}                        handleBlur={handleBlur}                        value={values.email}                        fieldType="email"                      /><ErrorMessage                        name="email"                        render={msg => (<Text style={styles.errorText}>{msg}</Text>                        )}                      /></View><View style={styles.buttonContainer}><Button                        rounded                        style={styles.button}                        onPress={handleSubmit}><Text style={styles.text}>Add Friend </Text></Button></View></View>                )}</Formik></View>            {showUsers(userData, Number(numberOfUsers))}</View></View></SafeAreaView></Modal>  );};

When I was using my code without showUsers, I wasn't facing this issue.


Viewing all articles
Browse latest Browse all 6212

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>