чтобы получить данные из API, мне нужно отправить токен jwt в заголовке вызова. Я сохраняю его в локальном хранилище после того, как получу его в своем приложении, и когда я проверяю консоль браузера, я вижу, что сохранение работает - я вижу, как оно появляется в консоли, когда я делаю localStorage.getItem('token' ) там. Но когда я пытаюсь добавить его в свой вызов API, я получаю сообщение об ошибке, в котором jwt не найден. Очевидно, что запрос на получение выполняется до того, как будет выполнена моя логика получения токена из локального хранилища. Ниже приведен мой код. Любые советы о том, как обойти это, будут оценены. Спасибо !
const url = 'https://url.com';
const token = localStorage.getItem('token');
const AuthStr = 'Bearer '.concat(token);
export default class TestCall extends React.Component {
constructor(props) {
super(props);
this.state = {
error: undefined,
isLoaded: false,
items: [],
};
this.getData = this.getData.bind(this);
}
componentDidMount() {
this.getData();
}
getData () {
return fetch(url, {
method: 'GET',
headers:{
Accept: 'application/json',
'Content-Type': 'application/json',
},
Authorization: "Bearer " + AuthStr,
})
.then(res => res.json())
.then(
(result) => {
this.setState({
isLoaded: true,
items: result
});
},
(error) => {
this.setState({
isLoaded: true,
error
});
}
)
}
render() {
const { error, isLoaded, items } = this.state;
if (error) {
return <div>Error: {error.message}</div>;
} else if (!isLoaded) {
return <div>Loading...</div>;
} else {
return (
<p>{items} </p>
);
}
}
}
ОБНОВИТЬ:
в соответствии с ответом, который я получил, я изменил свой код вверху на:
const token = localStorage.getItem('token');
Я удалил константу AuthStr. поэтому мой запрос на получение сейчас:
headers:{
Accept: 'application/json',
'Content-Type': 'application/json',
},
Authorization: "Bearer " + token,
})
Это должно было исправить опечатку, но ответ, который я получаю, все еще не найден jwt.