Он вычисляется только один раз, когда компонент монтируется, из-за пустого массива зависимостей. Если вы добавите location
в массив зависимостей эффекта, он вызовет обратный вызов при изменении location
.
import React, { useState, useEffect } from "react";
import { useLocation } from "react-router-dom";
function Header() {
const [inIndex, setInIndex] = useState();
let location = useLocation();
useEffect(() => {
//Checks if location.pathname is not "/".
if (location.pathname !== "/") setInIndex(false);
else setInIndex(true);
}, [location]); // <-- add location to dependency array
console.log(inIndex); //Keeps saying true
return null;
}
export default Header;
Примечание: Вы также можете просто сохранить обратное исходного условного теста, поскольку вы устанавливаете false, когда условие истинно.
useEffect(() => {
//Checks if location.pathname is not "/".
setInIndex(location.pathname === "/");
}, [location]);