React memo prevProps 总是给出初始值,而不是实际的先前道具

问题描述

主要组件:

const AProfileFilter = ({ data = []) => {
    const [getData,setData] = useState([]);
    const [getStore,setStore] = useState([]);
    
    useEffect(() => {
        setData(prepareFilterData(data));
    },[data]);

    useEffect(() => {
        setStore({ "addMoreOptions": getData.filter((flr) => flr.isShow === false),"displayFields": getData.filter((flr) => flr.isShow === true) })
    },[getData]);
  
    // AProfileFilter logic here
    // (getStore) addMoreOptions state will be update based on some condition.

    return <ASelect defaultValues={getStore.addMoreOptions}>
}
export default ZListingProfileFilter;

子组件:

const ASelect = (props) => {
    // ASelect logic here
}
function areEqual(prevProps,nextProps) {
  console.log("prevProps > ",prevProps.defaultValues,"nextProps > ",nextProps.defaultValues);
  return _.isEqual(prevProps.defaultValues,nextProps.defaultValues);
}
export default memo(ASelect,areEqual);

当前结果:

enter image description here

预期结果:

  1. 最初可以使用 (Blank Array) [] 然后将其更新为 (Filled Array) [{...}]
  2. 第二次我想要以前的应该是 (Filled Array) [{...}] 并且更新一个应该是 (Blank Array) [],因为我已经从 AProfileFilter 组件中将其设为空白。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)