Как получить начальное состояние в редуксе, а затем использовать его в методе компонента? - PullRequest
0 голосов
/ 10 ноября 2018

Я использую 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>)

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 10 ноября 2018

в моем проекте, если тестирование в конструкторе приложений, если пользователь вошел в систему. Для этого я контролирую в своем состоянии избыточности мою переменную isLoggedIn.Для этого я использую mapStateToProps.

Если isLoggedIn, я получаю токен от API и сохраняю его в локальном хранилище, тогда я показываю, что домашний компонент еще есть! IsLoggedIn, я показываю компонент журнала.Я надеюсь, что этот способ поможет вам немного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...