Где я могу разместить код автоматической аутентификации в ReactJS? - PullRequest
0 голосов
/ 21 февраля 2019

Я использую ReactJS, redux и response-router.Я использую localStorage для автоматического входа пользователей.Мой App.js выглядит следующим образом:

`      <Router>
          <Provider store={store}>
            <div className="App">
              <Route path="/" component={NavBar} />
              <Route exact path="/" component={Home} />
              <Route exact path="/list" component={RoadmapList} />
              <Route path="/roadmap" component={OneRoadmap} />
              <Route path="/search" component={Search} />
              <Route exact path="/add" component={RoadmapAdder} />
              <Route exact path="/register" component={Register} />
              <Route exact path="/login" component={Login} />
              <Route
                exact
                path="/savedRoadmaps"
                component={SavedRoadmapsView}
              />
              <Route path="/profile" component={AuthorProfile} />
              <Route exact path="/account/edit" component={Profile} />
            </div>
          </Provider>
        </Router>`

Я ранее делал автоматическую аутентификацию в моем компоненте NavBar , так как NavBar будет в каждом отдельном URL из-за <Route path="/" component={NavBar}/>, я думалЯ мог бы просто использовать NavBar для автоматического входа в систему моих пользователей с помощью действия с избыточностью, называемого loginUser, а затем обновить несколько состояний избыточности, таких как isAuthenticated и user_info.Проблема состоит в том, что если бы я рендерил NavBar и, скажем, SavedRoadmapsView, SavedRoadmapsView не получал бы состояния редукции немедленно, так как он работает параллельно с NavBar .

Я попытался автоматически авторизовать пользователей в App.js, например:

 `  async componentDidMount() {

    var email = localStorage.getItem("email");
    var password = localStorage.getItem("password");
    var userData = { email: email, password: password };
    await loginUser(userData);

  }` 

Это не сработало.Может ли так быть, что loginUser является избыточным действием и не может использоваться вне провайдера?Что вы думаете об этом?Заранее спасибо.

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