Если вы даже не вводите свой useEffect, я думаю, это потому, что вы указываете dispatch
в качестве зависимости.
Эффект срабатывает при монтировании компонента, но также и при обновлении компонента (свойство или состояние). Итак, вы могли бы сделать что-то вроде этого:
import { useEffect } from "react";
const dispatch = useDispatch();
const offices = useSelector((state) => state.office.offices);
const [officeData, setOffices] = useState(undefined);
const [didMount, setDidmount] = useState(false);
// When component mount, load your Offices data
useEffect(() => {
if(!didMount){
dispatch(getOffices());
setOffices(offices);
} else {
setDidmount(true);
}
});
useEffect(() => {
if(didMount) {
// When you update officeData, do your thing
}
}, [officeData]);
Я не знаю поведения useSelector, но думаю, он не запускает рендеринг. Возможно, вы могли бы использовать useEffect с офисами в качестве зависимости , только будьте осторожны, чтобы не l oop!