@connect
działa świetnie, gdy próbuję uzyskać dostęp do sklepu w komponencie reagowania. Ale jak powinienem uzyskać do niego dostęp w innym kodzie kodu. Na przykład: powiedzmy, że chcę użyć tokena autoryzacyjnego do utworzenia mojej instancji axios, która może być używana globalnie w mojej aplikacji, jaki byłby najlepszy sposób na osiągnięcie tego?
To jest mój 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
Teraz chcę uzyskać dostęp do punktu danych z mojego sklepu, oto jak by to wyglądało, gdybym próbował pobrać go w komponencie reagującym za pomocą @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() {...}
}
Jakieś spostrzeżenia lub wzorce przepływu pracy?
api
w App
klasie i po uzyskaniu zezwolenia żeton można zrobić api.defaults.headers.common['Authorization'] = this.props.auth.tokens.authorization_token;
, a jednocześnie można przechowywać go w localStorage, tak więc gdy odświeża użytkowników na stronie, można sprawdzić, czy token istnieje w localStorage i jeśli to tak, możesz to ustawić. Myślę, że najlepiej będzie ustawić token na module API, jak tylko go dostaniesz.