Начальная загрузка без сохранения состояния с помощью React с перенаправлением токена

то, что я пытаюсь достичь, просто - это: 1: загрузить index.html> проверить токен если токен перенаправляется на панель управления если нет, то визуализируйте логин

все является объектно-ориентированным json, поэтому состояние определяется событиями, а не приложениями. Потому что я хочу запустить это как службу процесса, а не как веб-приложение.

Я бы хотел использовать React-Redux, но, конечно, у этих фреймворков есть острая необходимость импортировать дерьмо, которое не используется сразу, что мне кажется довольно неолитическим. Если мне это не нужно, не импортируйте. После запуска события импортируйте то, что мне нужно.

Любые идеи? (ps Я пришел из angular 1.5 в первую очередь, и я могу легко сделать это в Angular, но не смог обдумать это в реакции).

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
57
2

Ответы 2

Откуда этот токен? Это вызов AJAX или он у вас уже есть?

поместите это как комментарий, а не как ответ.

Shashank Vivek 04.04.2018 21:14

токен находится в sessionStorage. если он существует, то у меня (в angular) уже есть навигационный JSON-документ, поэтому мне не нужны маршруты. В Angular мне (всегда) нужен только один маршрут /:module' which loads views / module.html`, а затем, в зависимости от того, что это за модуль, я (уже) вернул вложенный документ JSON этого объекта, то есть: панель управления, пользователи, проекты, продукты, или что у тебя.

James Van Leuven 04.04.2018 21:25

Так нельзя ли просто создать условный рендеринг внутри компонента более высокого порядка? Допустим, у вас есть компонент приложения и внутри рендера вы делаете: render () {return sessionStorage.get ("token")? <Панель управления />: <Вход />}

Daniel Stoyanoff 04.04.2018 21:31

с этого момента я просто создаю страницу, избегая частичных данных и компилирую результат - используя документ json для визуализации свойств, которые должны - теоретически работать нормально для реакции, но, конечно, нет, это не так.

James Van Leuven 04.04.2018 21:32

Я перепробовал все варианты вариантов. Я нахожу логику Front-end разработки: «Эй, давайте все жестко закодируем и назовем это программированием!» Я являюсь специалистом по операциям с серверной системой. Я могу сгенерировать правила в базе данных, отобразить документы в формате json и просто передать это переднему концу. Передняя часть либо A: имеет документ json, а затем динамически строит себя, либо B : нет документа json, а значит, это страница входа. Это не должно быть хирургическим вмешательством на головном мозге.

James Van Leuven 04.04.2018 21:34

До завершения тестов должна быть необходимость в рендере. Тест 1: существует ли токен в sessionStorage? да -> затем перенаправьте на панель управления, если пользователь не щелкнул модуль в навигации, затем получите этот объект JSON с сервера, теперь создайте страницу. нет -> ну ладно тогда. нет состояния, ничего. просто загрузите красивую статическую html-страницу с логином, и событие «submit» теперь - это то, как мы загружаем первый json-документ, навигацию, стили, контент и т. д. - один раз.

James Van Leuven 04.04.2018 21:34

Взгляните на этот код. Это мое предложение для этого случая. codeandbox.io/s/ypn7546lkx

Daniel Stoyanoff 04.04.2018 21:42

@DanielStoyanoff. Ваше здоровье! наконец-то! решение без гражданства. :) спасибо приятель. Зависимости от внедрения классов и состояния слишком раздуты. Попытка заставить внешний интерфейс делать то, что уже делает сервер, всегда казалась мне обратной логикой, а не соответствием тому, что на самом деле является природой программирования. :). Это решение - единственное решение! ваше здоровье!

James Van Leuven 04.04.2018 21:50

Использование Redux здесь - адекватный выбор. Вам также следует подумать об использовании React Router.

Однако, как минимум, то, о чем вы просите, довольно просто. Вам просто нужен какой-то способ условного рендеринга.

// mock sessionStorage due to sandbox
const mockSessionStorage = { token: true }

const MainPage = () => <h1>Main Page</h1>
const Login = () => <h1>Login</h1>

const AUTHENTICATING = 0
const AUTHENTICATED = 1
const NOT_AUTHENTICATED = 2

const App = ({ authState }) => {
  switch (authState) {
    case AUTHENTICATED:
      return <MainPage />
    case NOT_AUTHENTICATED:
      return <Login />
  }

  return <h1>Loading...</h1>
}

const render = (authState) => {
  ReactDOM.render(
    <App authState = {authState} />,
    document.getElementById('root'))
}

const getAuthentication = () => {
  if (mockSessionStorage.token) {
    return render(AUTHENTICATED)
  }
  render(NOT_AUTHENTICATED)
}

render(false)
setTimeout(getAuthentication, 5000)
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

<div id='root' />

это похоже на все примеры, которые я рассмотрел на предмет реакции. у него есть `` const MainPage = () => <h1> Main Page </h1> const Login = () => <h1> Login </h1> `` нет реального примера 'эй мы понятия не имеем, что получаем. Похоже, что реакция слишком сильно зависит от жесткого кодирования всего, вместо того, чтобы просто возвращать случайные результаты, которые определяются только после того, как пользователь вошел в систему.

James Van Leuven 04.04.2018 21:43

Если честно, я просто вернусь к простому и несложному подходу angular 1.5. Мне не нужно ничего жестко кодировать, и я могу просто собрать и скомпилировать во время выполнения, а не раздувать браузер ненужной хренью.

James Van Leuven 04.04.2018 21:45

Что жестко запрограммировано? Компонент для MainPage и тому подобное оставлены вам в качестве упражнения, чтобы заполнить его соответствующим содержимым. Этот контент, конечно, можно получить через AJAX после загрузки компонента MainPage. Это та часть, с которой вам нужна помощь? Потому что вы спросили совсем не об этом. И если вам нужен AngularJS, не стесняйтесь его использовать - мы здесь не для того, чтобы убеждать вас в обратном.

Kevin Raoofi 04.04.2018 21:52

Другие вопросы по теме