Ich habe eine übergeordnete Komponente, die eine Sammlung von untergeordneten Elementen basierend auf einem über Requisiten empfangenen Array rendert.
import React from 'react';
import PropTypes from 'prop-types';
import shortid from 'shortid';
import { Content } from 'components-lib';
import Child from '../Child';
const Parent = props => {
const { items } = props;
return (
<Content layout='vflex' padding='s'>
{items.map(parameter => (
<Child parameter={parameter} key={shortid.generate()} />
))}
</Content>
);
};
Parent.propTypes = {
items: PropTypes.array
};
export default Parent;
Jedes Mal, wenn ein neues itemhinzugefügt wird, werden alle Kinder neu gerendert, und ich versuche dies zu vermeiden. Ich möchte nicht, dass andere Kinder neu gerendert werden. Ich möchte nur das zuletzt hinzugefügte rendern.
Also habe ich React.memo an dem Kind ausprobiert, wo ich es wahrscheinlich anhand der codeEigenschaft oder so vergleichen werde . Das Problem ist, dass die Gleichheitsfunktion niemals aufgerufen wird.
import React from 'react';
import PropTypes from 'prop-types';
import { Content } from 'components-lib';
const areEqual = (prevProps, nextProps) => {
console.log('passed here') // THIS IS NEVER LOGGED!!
}
const Child = props => {
const { parameter } = props;
return <Content>{parameter.code}</Content>;
};
Child.propTypes = {
parameter: PropTypes.object
};
export default React.memo(Child, areEqual);
Irgendwelche Ideen warum?