@connect
прекрасно работает, когда я пытаюсь получить доступ к магазину в компоненте реакции. Но как мне получить к нему доступ в другом фрагменте кода? Например, скажем, я хочу использовать токен авторизации для создания моего экземпляра axios, который можно использовать в моем приложении в глобальном масштабе. Каков наилучший способ добиться этого?
Это мое api.js
// tooling modules
import axios from 'axios'
// configuration
const api = axios.create()
api.defaults.baseURL = 'http://localhost:5001/api/v1'
api.defaults.headers.common['Authorization'] = 'AUTH_TOKEN' // need the token here
api.defaults.headers.post['Content-Type'] = 'application/json'
export default api
Теперь я хочу получить доступ к точке данных из своего магазина, вот как это выглядело бы, если бы я пытался извлечь ее из компонента реакции, используя @connect
// connect to store
@connect((store) => {
return {
auth: store.auth
}
})
export default class App extends Component {
componentWillMount() {
// this is how I would get it in my react component
console.log(this.props.auth.tokens.authorization_token)
}
render() {...}
}
Есть идеи или шаблоны рабочего процесса?
api
in App
и после получения токена авторизации вы можете это сделать api.defaults.headers.common['Authorization'] = this.props.auth.tokens.authorization_token;
, и в то же время вы можете сохранить его и в localStorage, поэтому, когда пользователь обновляет страницу, вы можете проверить, существует ли токен в localStorage, и если он Да, вы можете установить его. Я думаю, что будет лучше установить токен на модуль API, как только вы получите его.