如果某些属性发生变化,如何忽略 useEffect 执行任何操作?

时间:2021-07-03 06:37:30

标签: javascript reactjs react-hooks

如果 'filterParams' 中的 'roomCounts' 发生变化,我想忽略 useEffect 执行任何操作。有什么想法吗?

filterParams: {
    blockIds: [],
    roomCounts: [],
    pageNo: 1,
    pageSize: 1000,
    realEstateUUIDs: [],
    cityUUID: '',
    priceInMillionMax: null,
    priceInMillionMin: null,
    ready: null,
  },


  const filterParams = useSelector((state) => state.user.filterParams);
  const isFirstLoad = useRef(false);

  useEffect(() => {
    if (isFirstLoad.current) {
      dispatch(getBuildingList()).then(() => {
        dispatch(setBuildingID(null));
        dispatch(setApartmentList([]));
      });
    }
  }, [filterParams]);

2 个答案:

答案 0 :(得分:0)

你可以这样做

useEffect(() => {
// actions when value changes
},[formParams.blockIds,formParams.ready])

它将监听值变化并触发 useEffect 内部的动作

答案 1 :(得分:0)

不是将 filterParams 传递给 useEffect,您可以传递每个单独的元素,如 filterParams.blockIds、filterParams.pageNo、

 useEffect(() => {// actions values chnage}, 
 [formParams.blockIds,fromParams.pageNo,formParams.ready])

我认为您需要传递特定值而不是整个对象