Передайте значения в Navigation React Native

#javascript #react-native

Вопрос:

Я настроил функцию для навигации и передачи данных на другой экран при нажатии кнопки. проблема в том, что когда я пытаюсь отправить определенное значение ( serialNumber ), оно отображается, как undefined в консоли. Но когда я пробую некоторые другие значения, они проходят правильно. ниже приведен мой код

 <TouchableOpacity style={styles.actionButton}
onPress={() => startTT(item.id , item.serialNumber, item.ttId, item.model)}>
</TouchableOpacity>
 

Функция onPress

 function startTT(serialNumber, ttID, id,) {
    console.log("startJob Serial", serialNumber)
    navigation.navigate('SerialNo', { PSerial: serialNumber , ttId: ttID, STId: id, dataOBJ: serviceTData })
}
 

Мой Объект Данных

 Object {
  "actionTime": null,
  "arrivedAt": null,
  "callPerson": null,
  "category": null,
  "contactNo": "0",
  "createdAt": "2021-08-06 13:27:55",
  "custName1": null,
  "custName2": null,
  "geoLocation": null,
  "id": 1,
  "location": null,
  "remark": null,
  "repeat": null,
  "tasks": Array [
    Object {
      "completed": false,
      "createdAt": null,
      "model": "Lexmark:MS510DN",
      "product": "PRINTER",
      "remark": "paper jam",
      "serialNumber": "451444HH1N1GT",
      "status": null,
      "topic": "21080295T210",
      "ttId": 27226,
      "warrantyStatus": "MAINTENANCE_COMPREHENSIVE",
    },
  ],
  "topic": null,
  "visitingAdd1": "J/ HARTLEY COLLEGE,",
}
 

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

1. Я думаю, что твоя проблема item.id решена . По какой-то причине это не равноценно объекту, который вы разместили. Не могли бы вы опубликовать еще какой-нибудь код?

Ответ №1:

 function startTT(serialNumber, ttID, id,) {
    console.log("startJob Serial", serialNumber)
    navigation.navigate('SerialNo', { PSerial: serialNumber , ttId: ttID, STId: id, dataOBJ: serviceTData })
}
//will pass PSerial, ttId, STId, and dataOBJ on the route parameter
 

на другом экране, если вы используете функциональный компонент

 const route = useRoute();
const {PSerial,ttId,STId,dataOBJ} = route.params;
 

если вы используете компоненты класса

 const {PSerial,ttId,STId,dataOBJ} = this.props.route.params;
 

а затем вы можете вызвать параметр в своей таблице стилей

 <Text>{PSerial}</Text>
 

Редактировать :
у вашей функции есть 3 параметра, и вы добавляете 4 параметра при ее вызове

это правильный вариант

 startTT(item.serialNumber, item.ttId, item.model)
 

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

1. когда я пытаюсь console определить значение перед отправкой, оно отображается как undefined console.log("startJob Serial", serialNumber)

2. находится ли он внутри плоского списка с задачами в качестве данных ?

3. возможно, сначала попробуйте зарегистрировать элемент, возможно, ваш элемент действительно не определен. onPress => console.log(«Мой элемент»,пункт)

4. потому что я не вижу ничего плохого в вашей функции

5. MyItem Object { "completed": false, "createdAt": null, "model": "Lexmark:MS510DN", "product": "PRINTER", "remark": "paper jam", "serialNumber": "451444HH1N1GT", "status": null, "topic": "21080295T210", "ttId": 27226, "warrantyStatus": "MAINTENANCE_COMPREHENSIVE", } ==> > console.log ответ. Я думаю, что нет никаких проблем в item

Ответ №2:

 function startTT(serialNumber, ttID, id,) {
console.log("startJob Serial", serialNumber)
navigation.navigate('SerialNo', { PSerial: serialNumber , ttId: ttID, STId: id, dataOBJ: serviceTData })
 

}

Попробуйте console.log(«Серийный номер startJob», TTiD) // вы получите серийный номер