Ввод текста внутри функции map не изменяет react native

#react-native #react-native-elements

#реагировать-родной #реагирующие-собственные-элементы

Вопрос:

У меня проблема с вводимым текстом, когда я пытаюсь изменить его, возврат к предыдущему значению работал нормально из функции боковой карты. но внутри он отказывается менять его значение. Я думаю, что он повторно отображает себя при изменении текста. итак, как мне изменить текст и сохранить имя

 userdata.map((l, i) => (
                    <Input label='First Name' value={l.name}
                      onChangeText={setname} /> 
<Button title="Modify" onPress={() => 
                    modifyDetails(
                      name,
                      )
                    } />
))
 

Редактировать: Основываясь на коде Мохаммеда, я сделал это

 <Modal
        animationType="slide"
        transparent={true}
        visible={modalVisible}
        onRequestClose={() => {
          Alert.alert("Modal has been closed.");
        }}
      >
        <ScrollView>
          <View style={styles.centeredView}>
            <View style={styles.modalView}>
              <TouchableHighlight
                  onPress={() => {
                    setModalVisible(!modalVisible);
                  }}
                >
                    <Text style={styles.textStyleClose}>X</Text>
                </TouchableHighlight>
                   <UserDataWithCallback/> // inputs called here
            </View>
          </View>
        </ScrollView>
</Modal>
 

Но теперь отображает пустые входные данные. Любое решение.

Комментарии:

1. тогда где же ваша функция отображения? и используете ли вы компоненты класса или крючки?

Ответ №1:

useCallback решит вашу проблему.

 const userDataWithCallback = React.useCallback((l, i) => {
   return (
      <> // maybe a key prop is needed too
         <Input
            label='First Name'
            value={l.name}
            onChangeText={setname} /> 

         <Button
            title="Modify"
            onPress={() => modifyDetails(name)} />
      </>
  )
}, [])

userdata.map((l, i) => (
   userDataWithCallback(l, i)
))
 

Комментарии:

1. Но он возвращает пустое входное значение, сначала отображается журнал консоли l.name значение, а затем возвращает значение undefined.

2. могу ли я увидеть вашу функцию modifyDetails или даже ваш полный код?

3. Я просто вставляю код, а не приложение snack.expo.io/@mgonekar/edit-input-data

4. Я видел ваш код. и вот пример, который я сделал для вас. возможно, это может вам помочь snack.expo.io/e72qk4yEz . И я думаю, что мой ответ не более полезен для вашего случая.