@connect
funktioniert hervorragend, wenn ich versuche, innerhalb einer Reaktionskomponente auf den Speicher zuzugreifen. Aber wie soll ich in einem anderen Code darauf zugreifen? Zum Beispiel: Angenommen, ich möchte ein Autorisierungstoken zum Erstellen meiner Axios-Instanz verwenden, das global in meiner App verwendet werden kann. Was wäre der beste Weg, um dies zu erreichen?
Das ist mein 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
Jetzt möchte ich von meinem Geschäft aus auf einen Datenpunkt zugreifen. So würde das aussehen, wenn ich versuchen würde, ihn innerhalb einer Reaktionskomponente mit abzurufen @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() {...}
}
Gibt es da draußen Einblicke oder Workflow-Muster?
api
In- App
Klasse importieren und nach Erhalt des Autorisierungstokens können Sie dies tun api.defaults.headers.common['Authorization'] = this.props.auth.tokens.authorization_token;
. Gleichzeitig können Sie es auch in localStorage speichern. Wenn der Benutzer die Seite aktualisiert, können Sie überprüfen, ob das Token in localStorage vorhanden ist und ob es vorhanden ist Wenn Sie dies tun, können Sie es einstellen. Ich denke, es ist am besten, das Token auf dem API-Modul festzulegen, sobald Sie es erhalten.