Este es mi componente principal:
const A = () => { const [data, setData] = useState([]); const [isLoading, setIsLoading] = useState(true); const isFetching = useRef(false); ... const fetchMoreData = async () => { if(isFetching.current) return; isFetching.current = true; setIsLoading(true); try { const newData = await ... setData([...data, ...newData]); } catch(err) { ... } setIsLoading(false); isFetching.current = false; } ... return <B data={data} isLoading={isLoading} onEndReached={fetchMoreData} /> }Y estoy tratando de memorizar el componente B de mi hijo, para evitar repeticiones innecesarias. Actualmente, estoy haciendo lo siguiente:
const B = memo(({ data, isLoading, onEndReached }) => { ... return ( <FlatList data={data} isLoading={isLoading} onEndReached={onEndReached} /> ); }, (prevProps, nextProps) => { return JSON.stringify(prevProps.data) === JSON.stringify(nextProps.data) && prevProps.isLoading === nextProps.isLoading; }); Pero creo que mi memorización puede causar problemas... ya que no estoy agregando prevProps.onEndReached === nextProps.onEndReached
Pero... todo funciona bien :/ Por cierto, supongo que puede haber una pequeña posibilidad de que sucedan cosas inesperadas por no agregarlo. ¿Qué piensas? ¿Es necesario agregar métodos en el método areEqual ?