#javascript #android #reactjs #react-native #fetch
Вопрос:
Я новичок в реагировании на родной язык. Я создаю простое приложение с навигацией по ящикам. После входа в систему я хочу обновить имя пользователя и адрес электронной почты в ящике. Я попытался извлечь данные из API, используя fetch()
этот ComponentDidMount()
метод, но проблема в том, что, когда я устанавливаю данные в состояние, у них есть некоторая ошибка обещания.
Я хочу знать лучший подход к извлечению данных из API и их хранению, чтобы они были доступны в любом компоненте, обычно в токене аутентификации и электронной почте пользователя.
Кроме того, кто-нибудь может предложить лучший способ поддержки кода с помощью извлечения API, я пишу код для извлечения в каждом компоненте, чтобы он везде был загроможден.
Код Обновления:
export class CustomDrawer extends React.Component{
state = {
token: '',
id: '',
user: '',
}
componentDidMount = async() =>{
await this.getAll();
}
setMyToken = () => {
AsyncStorage.getItem('authToken').then((value) =>{
let temp = JSON.parse(value)
this.setState({token : temp.token})
}
getAll = async() => {
await this.setMyToken();
return fetch(`API_URL`).then(response=>response.text().then(text=>{
const data = text amp;amp; JSON.parse(text)
this.setState({user: data.username, id: data.id})
})).catch(function(error){
console.log(error)
});
}
}
Комментарии:
1. Ты поступаешь правильно. Здесь может быть синтаксическая ошибка. Попробуйте опубликовать код здесь. Кроме того, официальная документация для fetch : reactjs.org/docs/…
2. добавлен код.. Если я выполняю setMyToken() в componentDidMount (), а затем вызываю функцию GetAll() при нажатии кнопки все работает нормально, но когда я пытаюсь загрузить оба из них автоматически, появляется ошибка.
3. вызовите метод setMyToken() в componentDidMount() и в асинхронном режиме затем() вызовите метод GetAll() с такими параметрами, как GetAll(JSON.parse(значение)), и вы получили свое значение в методе GetAll (), а также удалите возврат в GetAll() зачем вам это нужно ?
4. @AnkitPatel Привет, спасибо! Это сработало.. получил данные, но теперь отображается предупреждение: не удается выполнить обновление состояния реакции для размонтированного компонента.