@connect
funziona perfettamente quando sto tentando di accedere al negozio all'interno di un componente di reazione. Ma come dovrei accedervi in qualche altro pezzetto di codice. Ad esempio: diciamo che voglio usare un token di autorizzazione per creare la mia istanza axios che può essere utilizzata globalmente nella mia app, quale sarebbe il modo migliore per riuscirci?Qual è il modo migliore per accedere al redux store all'esterno di un componente di reazione?
Questo è il mio 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
Ora voglio accedere a un punto di dati dal mio deposito, ecco quello che potrebbe apparire come se stavo cercando di prenderlo all'interno di un componente reagire 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() {...}
}
Eventuali approfondimenti o modelli di flusso di lavoro disponibili?
È non voglio che tu sia Axios la sostanza per vivere in un middleware redux? Sarà disponibile per tutte le tue applicazioni in questo modo –
Puoi importare la classe 'api' in' App' e dopo aver ottenuto il token di autorizzazione puoi fare 'api.defaults.headers.common ['Autorizzazione'] = this.props. auth.tokens.authorization_token; ', E allo stesso tempo puoi salvarlo anche in localStorage, così quando l'utente aggiorna la pagina, puoi verificare se il token esiste in localStorage e se lo fa, puoi impostarlo., Penso che sia meglio impostare il token sul modulo API non appena lo si ottiene. –
Dan Abromov fornisce un esempio nella coda di problemi qui: https://github.com/reactjs/redux/issues/916 – chrisjlee