refactor: 优化渲染逻辑,确保不会因为组件的变更导致的重绘

pull/13/head
moonrailgun 3 years ago
parent e0e98bfe56
commit fcaa7e42f1

@ -74,13 +74,14 @@ export const VirtualizedMessageList: React.FC<VirtualizedMessageListProps> =
// }
};
const renderRow = ({ data, itemId, style }: any) => {
const index = findMessageIndexWithId(props.messages, itemId); // TODO: 这里是因为mattermost的动态列表传的id因此只能这边再用id找回可以看看是否可以优化
const renderRow = ({ data, itemId }: any) => {
const messages = props.messages;
const index = findMessageIndexWithId(messages, itemId); // TODO: 这里是因为mattermost的动态列表传的id因此只能这边再用id找回可以看看是否可以优化
if (index === -1) {
return <div />;
}
const message = props.messages[index];
const message = messages[index];
let showDate = true;
let showAvatar = true;
@ -89,7 +90,7 @@ export const VirtualizedMessageList: React.FC<VirtualizedMessageListProps> =
// 当不是第一条数据时
// 进行时间合并
const prevMessage = props.messages[index - 1];
const prevMessage = messages[index - 1];
if (
!shouldShowMessageTime(
new Date(prevMessage.createdAt ?? ''),

@ -140,11 +140,7 @@ export interface OnScrollInfo {
interface DynamicSizeListProps {
canLoadMorePosts: () => void;
children: (info: {
data: any;
itemId: any;
style?: any;
}) => React.ReactElement;
children: (info: { data: any; itemId: any }) => React.ReactElement;
height: number;
initRangeToRender: number[];
initScrollToIndex: () => any;
@ -832,7 +828,7 @@ export default class DynamicSizeList extends PureComponent<
isItemInLocalPosts ||
isLoader
) {
const item: React.ReactElement = createElement(children, {
const item: React.ReactElement = children({
data: itemData,
itemId,
});

Loading…
Cancel
Save