Tôi có một thành phần cha mẹ biểu hiện một bộ sưu tập con dựa trên một mảng nhận được thông qua các đạo cụ.
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;
Mỗi khi một cái mới item
được thêm vào, tất cả trẻ em được kết xuất lại và tôi đang cố gắng tránh điều đó, tôi không muốn những đứa trẻ khác được kết xuất lại, tôi chỉ muốn kết xuất cái cuối cùng được thêm vào.
Vì vậy, tôi đã thử React.memo cho đứa trẻ nơi mà tôi có thể sẽ so sánh bằng code
tài sản hoặc thứ gì đó. Vấn đề là hàm bình đẳng không bao giờ được gọi.
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);
Bất cứ ý tưởng tại sao?