@connect
funktioniert gut, wenn ich versuche, auf den Speicher innerhalb einer Reaktionskomponente zuzugreifen. Aber wie sollte ich auf etwas anderes Code zugreifen? Zum Beispiel: Angenommen, ich möchte ein Autorisierungstoken für die Erstellung meiner Axios-Instanz verwenden, die global in meiner App verwendet werden kann. Was wäre der beste Weg, dies zu erreichen?Was ist der beste Weg, auf den Redox-Speicher außerhalb einer Reaktionskomponente zuzugreifen?
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 Speicher einen Datenpunkt zuzugreifen, ist hier, was das aussehen würde, wenn ich versuchte, es in einem reagieren Komponente zu holen @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() {...}
}
Irgendwelche Einblicke oder Workflow-Muster da draußen?
Sie Ich will nicht, dass du Axios bist nstance in einer redux Middleware zu leben? Es wird von all Ihrer Anwendung auf diese Weise zur Verfügung gestellt werden –
Sie können die 'API' in' App' Klasse importieren und nach Erhalt des Autorisierungs-Tokens können Sie 'api.defaults.headers.common ['Authorization'] = this.props. auth.tokens.authorization_token; ', und 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. Wenn dies der Fall ist, können Sie es festlegen. Ich denke, es wird am besten sein, das Token auf einem API-Modul zu setzen, sobald Sie es bekommen haben. –
Dan Abromov bietet ein Beispiel in der Warteschlange Warteschlange hier: https://github.com/reactjs/redux/issues/916 – chrisjlee