#react-native
#react-native
Вопрос:
В моем экранном поиске я создаю выборку, которая возвращает json в качестве ответа. Я устанавливаю этот ответ в качестве параметра для перехода к экрану B. Как лучше всего создать этот параметр?
Я только что отправил ответ, но на другой стороне он не определен!
fetch(this.endPoint, {
method: "GET",
headers: null,
}).then(response => response.json())
.then(response => {
console.log('the result is');
console.log(response);
this.props.navigation.navigate("Available", {'searchResult' : response})
})
// in screen B
render() {
let list = this.props.navigation.getParam('searchResult');
console.log(this.list); // returns undefined
return (
.....
);
}
Ожидаемый результат: получение Json
Фактический результат: получение неопределенного
Комментарии:
1.
console.log(list)
безthis
ключевого слова
Ответ №1:
list
по сути, это переменная внутри render()
метода. Таким образом, вы можете вызвать его напрямую, без использования объекта instance this
.
console.log(list);
Также, поскольку вы используете getParam
, будет лучше, если вы вызовете его с резервным значением по умолчанию для вашего, list
на случай, если это так undefined
. Например, предполагается, что if list
представляет собой массив значений,
let list = this.props.navigation.getParam('searchResult', []);
Ответ №2:
Попробуйте это:
fetch(this.endPoint, {
method: "GET",
headers: null,
}).then(response => response.json())
.then(response => {
console.log('the result is');
console.log(response);
/* 1. Navigate to the Available route with params */
this.props.navigation.navigate('Details', {
searchResult: response,
});
})
И считывать параметры из доступного маршрута:
const list = navigation.getParam('searchResult', 'some default value');
console.log(list); // without this