• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Dziwna kolejność renderowania w React dla OR [React.js]

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
342 wizyt
pytanie zadane 23 lipca 2021 w JavaScript przez Oskar Szkurłat Bywalec (2,780 p.)
zamknięte 23 lipca 2021 przez Oskar Szkurłat

Cześć,
Napotkałem taki problem i nie bardzo rozumiem skąd może wynikać. Podczas załączania strony opartej o React'a mam w głównym komponencie App prostą logikę wyboru w zależności od stanu z ciasteczek. Wykonsolowałem wartość, jaka jest w obiekcie i obiekt na każdym swoim etapie dobrze widzi wartość true z cookie.
Nie rozumiem do końca dlaczego dla następującego fragmentu kodu...

import React, { useState } from "react";
import Cookies from 'js-cookie';

function App() {
  const auth = Cookies.get('X')
  const [authorized, setAuthorized] = useState(auth)
  console.log('auth', auth, authorized) //zwraca 'auth true true' każdorazowo

return (
    <div className="App">
      {authorized === false ? (
        <PanelA />
      ) : (
        <PanelB />
      )
)
}

... działa to tak, że wpierw pomimo stanu true mi renderuje, jakby to był false (zauważalne dla oka), następnie przerenderowuje się i ustawia się poprawnie do true. Co równie ciekawe, jak zamienie kolejność na:
 

 {authorized === true ? (
        <PanelB />
      ) : (
        <PanelA />
      )

jest odwrotny problem. 

Próbowałem wcześniej wczytać już cookie na poziomie index.js i propsami przekazać i wartość domyślną stanu ustawić z propsów ale jest ten sam rezultat.

Czy ma ktoś pomysł, w jaki sposób mógłbym to naprawić? :( Z góry dzięki

komentarz zamknięcia: Sam znalazłem przyczynę.

1 odpowiedź

0 głosów
odpowiedź 23 lipca 2021 przez Oskar Szkurłat Bywalec (2,780 p.)

Nvm, okazało się, że biblioteka Cookie zwracała mi string, który był wpisywany w state, a dopiero potem był traktowany jako boolean, pomogło rzutowanie z samego początku na boolean, tzn. 


  const auth = (Cookies.get('X') === 'true')

 

Podobne pytania

0 głosów
1 odpowiedź 545 wizyt
0 głosów
1 odpowiedź 321 wizyt
0 głosów
1 odpowiedź 131 wizyt
pytanie zadane 17 marca 2016 w PHP przez niezalogowany

93,195 zapytań

142,211 odpowiedzi

322,056 komentarzy

62,519 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 3316p. - dia-Chann
  2. 3251p. - Łukasz Piwowar
  3. 3243p. - Łukasz Eckert
  4. 3222p. - CC PL
  5. 3167p. - Tomasz Bielak
  6. 3157p. - Łukasz Siedlecki
  7. 3133p. - rucin93
  8. 3110p. - Maurycy W
  9. 2992p. - Mikbac
  10. 2918p. - Adrian Wieprzkowicz
  11. 2490p. - Marcin Putra
  12. 2467p. - Michał Telesz
  13. 2427p. - Michal Drewniak
  14. 2372p. - Anonim 3619784
  15. 1949p. - rafalszastok
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...