@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
в App
класі і після отримання дозволу маркерів ви можете зробити api.defaults.headers.common['Authorization'] = this.props.auth.tokens.authorization_token;
, і в той же час ви можете зберегти його в LocalStorage, так що, коли тонізує користувач сторінки, ви можете перевірити , якщо маркер існує в LocalStorage і якщо він так, ви можете встановити його. Я думаю, що найкраще буде встановити маркер на модулі api, як тільки ви його отримаєте.