@connect
fonctionne très bien lorsque j'essaie d'accéder au magasin dans un composant de réaction. Mais comment dois-je y accéder dans un autre morceau de code. Par exemple: disons que je souhaite utiliser un jeton d'autorisation pour créer mon instance axios qui peut être utilisée globalement dans mon application, quel serait le meilleur moyen d'y parvenir?
C'est mon 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
Maintenant, je veux accéder à un point de données de mon magasin, voici à quoi cela ressemblerait si j'essayais de le récupérer dans un composant de réaction en utilisant @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() {...}
}
Avez-vous des idées ou des modèles de flux de travail?
api
dans la App
classe et après avoir obtenu le jeton d'autorisation, vous pouvez le faire api.defaults.headers.common['Authorization'] = this.props.auth.tokens.authorization_token;
, Et en même temps, vous pouvez le stocker dans localStorage également, donc lorsque l'utilisateur actualise la page, vous pouvez vérifier si le jeton existe dans localStorage et s'il fait, vous pouvez le définir., Je pense qu'il sera préférable de définir le jeton sur le module api dès que vous l'obtiendrez.