#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) // вы получите серийный номер