#javascript #react-native #fetch
Вопрос:
Я написал этот код в собственном проекте react, а не в компоненте, мне нужно только сохранить массив:
fetch(url, {})
.then(res => res.json())
.then(data => console.log(data))
И все работает, но я хотел бы сохранить то, что я напечатал. Вместо console.log(data)
этого я попытался использовать const newData = data
, но, распечатав его, я заметил, что получил undefined
.
Комментарии:
1. вам нужно использовать состояние, reactjs.org/docs/state-and-lifecycle.html
2. Я тестирую этот код отдельно, моя цель-сохранить массив, напечатанный с
console.log(data)
помощью переменной
Ответ №1:
если вы используете метод выборки в компоненте react, затем используйте состояние для хранения ответа, а если вы используете метод выборки в файле действий, вам необходимо использовать контекстный API, redux и т. Д
Комментарии:
1. Я не пытаюсь использовать fetch methon в компоненте реакции. Моя цель — сохранить этот массив в переменной
Ответ №2:
Чтобы сохранить данные, вот что я бы рекомендовал.
Сначала вы можете расширить:
.then(data => console.log(data))
в:
.then((data) =>{
console.log(data)
}
Таким образом, у нас есть больше строк для написания кода.
Потому .then()
что функция-это функция со стрелкой
Затем мы можем инициализировать переменную в верхней newData
части, а затем установить данные, равные этой data
переменной внутри позже. Кроме того, я заметил, что вы установили newData
переменную с ключевым const
словом . const
является неизменяемым инициализатором, что означает, что он может быть установлен только один раз и не может быть сброшен. Вместо этого используйте let
ключевое слово. Наш код сейчас выглядит так:
let newData;
fetch(url, {})
.then(res => res.json())
.then(data => {
console.log(data)
newData = data;
console.log(newData)
})
Теперь там хранятся новые данные. Если вы хотите получить новые данные console.log
за пределами .then()
функции, вам нужно будет подключиться async
к вашей fetch()
функции, чтобы она стала : async fetch()
. Подробнее об асинхронности здесь.
Ответ №3:
Вам все равно нужно использовать состояние, как я уже сказал в комментарии
Вот пример
constructor(props) {
super(props);
this.state = {
data: []
};
}
тогда на тебе принеси
fetch(url, {})
.then(res => res.json())
.then(data => {
this.setState({
data: data
});
});
)
Тогда this.state.data
есть ли то, что было получено от fetch