1. Бессмысленно это делать при создании store. Только запутаете код. Делать это стоит в async action. При создании store разве уместно положить инстанс axios дополнительным аргументом в redux-thunk, но только если используете SSR.
2. Так же в async action.
Создайте действие init и проверяйте там наличие токена, и загружайте нужные для инициализации данные:
export function init() {
return async (dispatch, getState) => {
const token = Cookies.get('token');
if (token) {
axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
await dispatch(fetchUserData());
// some other code
} else {
// else case code
}
};
}
Вызывайте init сразу после создания store:
const store = configureStore();
store.dispatch.(init());
const Root = () => (
<Provider store={store}>
<Router>
<App />
</Router>
</Provider>
);