Я использую activ.js с redux
для создания своего проекта.
В настоящее время я храню токен пользователей в глобальном состоянии. Но как получить токен перед каждым монтированием компонента? Например. У меня есть axios action
в redux
для извлечения данных из REST API в ComponentDidMount
:
Теперь этот метод перехватит ComponenDidMount
, потому что он не может получить токен (сначала он нулевой и хранится в другом редукторе).
componentDidMount() {
this.props.loadProfile()
}
// in actions
export const loadProfile = (token) => {
return (dispatch, getState) => {
dispatch(loadProfileStart())
const getUrl = URL + 'myprofile/'
return axios.get(getUrl, {
headers: {
...HEADERS,
'Authorization': 'Token ' + token // token is in another reducer,
}
})
.then(res => {
dispatch(loadProfileSuccess(res.data.profile))
return res.data.profile
})
.catch(err => {
dispatch(loadProfileFail(err))
throw (err)
})
}
}
Я провел исследование, в котором говорилось, что я должен использовать middleware
. Но я все еще не понимаю getState, потому что мой магазин находится в App.js
const store = createStore(rootReducer, compostEnhancer(
applyMiddleware(thunk )
))
const app = (
<Provider store={store}>
<BrowserRouter>
<App/>
</BrowserRouter>
</Provider>)
Спасибо за вашу помощь!