Я учусь кодировать, используя React Native и использую его для взаимодействия с GitHub API. Я использую код ниже, чтобы получить данные обо всех моих уведомлениях.
Во-первых, он не отправляет вызов выборки после загрузки имени пользователя и пароля Asyncstorage. Он возвращает сообщение о необходимости аутентификации. Я делаю что-то не так с Asyncstorage? Он работал нормально, когда я использовал его на другой странице, за исключением того, что он не извлекался, как на componentDidMount, а только во время нажатия кнопок.
Я временно обошел аутентификацию, жестко закодировав свое имя пользователя и пароль, и это подводит меня ко второй проблеме. Я не могу использовать уведомления, которые я сохраняю в состояние. Что я делаю не так и как правильно использовать save.
Наконец, как я могу использовать сохраненный ответ с Flatlist для отображения всех заголовков уведомлений? Мне не удалось сохранить массив/словарь для перехода в Flatlist, поэтому я не знаю, как это сделать. Могу ли я просто передать сохраненный массив, как показано ниже:
<FlatList
data={this.state.notidata}
renderItem={this._renderItem}
/>
_renderItem = ({item}) => {
return (
<TouchableHighlight
underlayColor='#dddddd'>
<View>
<Text>{item.id}</Text>
</View>
</TouchableHighlight>
);
};
Фактический код
constructor() {
super();
this.state = {
notidata: [],
mainusername: '',
mainpassword: '',
showdone: '',
};
}
componentDidMount () {
let base64 = require('base-64');
AsyncStorage.getItem("mainusername").then((value) => {
this.setState({mainusername: value});
})
.then(
AsyncStorage.getItem("mainpassword").then((value) => {
this.setState({mainpassword: value});
}).done())
.then(
fetch("https://api.github.com/notifications",{
method: "GET",
headers: {
'Content-Type': 'application/json',
'Authorization': 'Basic ' + base64.encode(this.state.mainusername + ':' + this.state.mainpassword),
},
})
.then((response) => this.setState({
notidata: response,
})));
}