Я хотел бы установить переменную состояния books
как результат API. Я не могу сделать это в componentDidMount
, потому что у меня нет токена в начале, и он мне нужен для получения результата от API. Ничего не происходит с состоянием books
, когда я запускаю следующий код. Если я поставлю state.books=res.data
перед возвратом, я получу результат, но после ручного обновления sh page.
constructor(props) {
super(props);
this.state = {
books: [],
};
}
и
static getDerivedStateFromProps(nextProps, state) {
if (nextProps.token){
axios.defaults.headers = {
"Content-Type": "application/json",
Authorization: "Token " + nextProps.token
}
axios.get('http://127.0.0.1:8000/api/book/own/')
.then(res => {
return {
books: res.data,
}
})
}
данные из API выглядят так:
{
id: 66,
isbn: "9780545010221",
title: "Title",
author: "Author,Author",
}
В методе рендеринга я вызываю компонент с данными this.static.books
.
Не могли бы вы дать мне совет?