#javascript #reactjs #use-effect
#язык JavaScript #реагирует на #эффект использования
Вопрос:
Я новичок в реакциях. При начальной загрузке страницы я хочу проверить, является ли состояние нулевым, затем я хочу перенаправить на другую страницу входа
Вот код компонента:
export default function Addblousesalwar() { const navigate = useNavigate(); const { state } = useLocation(); console.log(state) //null if(state === null || state === undefined){ navigate("/login") }
Но это показывает ошибку:
Вы должны вызывать функцию navigate() в React.useEffect(), а не при первом отображении вашего компонента. Я также попробовал использовать эффект. Но эффект использования не выполняется.
useEffect(() =gt; { if(state === null || state === undefined){ navigate("/login") } }, []); useEffect(() =gt; { if(state === null || state === undefined){ navigate("/login") } }, []);
Я тоже пробовал это
useEffect(() =gt; { if(state === null || state === undefined){ navigate("/login") } }, [state]);
Этот эффект использования также не срабатывает Пожалуйста, помогите мне с некоторыми решениями
Комментарии:
1. В комментарии вы упомянули, что получаете «ошибку типа: не удается уничтожить свойство»Имя пользователя «»состояния», поскольку оно равно нулю «. Таким образом, ошибка, похоже, находится в другом месте, которое не включено в опубликованный вами код.
2. @GabrielePetrioli Да, это из другого места. Иногда я получаю значение null из другого места. Поэтому я хочу разобраться с этой ошибкой. Если он был равен нулю, я хочу перенаправить его на страницу входа в систему….
3. если вы исправите эту ошибку, деструктурирование
useEffect
будет выполнено, и произойдет навигация.
Ответ №1:
Состояние может содержать пустой объект {}
. Попробуйте также проверить условие для пустого объекта
useEffect(() =gt; { if(state === null || state === undefined || state === {}){ navigate("/") } }, [state]);
Комментарии:
1. Ошибка типа: Не удается уничтожить свойство «Имя пользователя «»состояния», так как оно равно нулю.
2.
state === {}
всегда будет возвращатьсяfalse
.3. @somaiyappan Я попробовал ваш код, и он перенаправляется на
login
«когдаstate
null
«.