@connect
반응 구성 요소 내의 저장소에 액세스하려고 할 때 효과적입니다. 그러나 다른 코드로 어떻게 액세스해야합니까? 예를 들어, 내 앱에서 전 세계적으로 사용할 수있는 axios 인스턴스를 생성하기 위해 인증 토큰을 사용하려고한다고 가정 해 봅시다.이를 달성하는 가장 좋은 방법은 무엇입니까?
이것은 나의 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
이제 내 상점에서 데이터 포인트에 액세스하고 싶습니다. 여기를 사용하여 반응 구성 요소 내에서 데이터 포인트를 가져 오려고하면 어떻게 보일까요? @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() {...}
}
통찰력이나 워크 플로 패턴이 있습니까?
api
내에서 가져올 수 있고 App
권한 부여 토큰을 얻은 후에도 할 수 api.defaults.headers.common['Authorization'] = this.props.auth.tokens.authorization_token;
있으며, 동시에 localStorage에도 저장할 수 있으므로 사용자가 페이지를 새로 고칠 때 localStorage에 토큰이 있는지 여부와 토큰이 있는지 여부를 확인할 수 있습니다. 당신이 그것을 설정할 수 있습니다., 나는 그것을 얻는 즉시 api 모듈에 토큰을 설정하는 것이 가장 좋을 것이라고 생각합니다.