@connect
funciona muy bien cuando intento acceder a la tienda dentro de un componente de reacción. Pero, ¿cómo debo acceder a él en algún otro bit de código? Por ejemplo: digamos que quiero usar un token de autorización para crear mi instancia de axios que pueda usarse globalmente en mi aplicación, ¿cuál sería la mejor manera de lograrlo?
Este es mi 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
Ahora quiero acceder a un punto de datos desde mi tienda, así es como se vería si estuviera tratando de recuperarlo dentro de un componente de reacción usando @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() {...}
}
¿Alguna idea o patrones de flujo de trabajo por ahí?
api
en App
clase y después de obtener el token de autorización que puede hacer api.defaults.headers.common['Authorization'] = this.props.auth.tokens.authorization_token;
, y al mismo tiempo también puede almacenarlo en localStorage, por lo que cuando el usuario actualice la página, puede verificar si el token existe en localStorage y si sí, puedes configurarlo. Creo que será mejor configurar el token en el módulo api tan pronto como lo obtengas.