diff --git a/src/Indent.tsx b/src/Indent.tsx index 41aac59d..890372c9 100644 --- a/src/Indent.tsx +++ b/src/Indent.tsx @@ -1,5 +1,6 @@ import classNames from 'classnames'; import * as React from 'react'; +import { areArraysEqual } from './utils/diffUtil'; interface IndentProps { prefixCls: string; @@ -30,4 +31,13 @@ const Indent: React.FC = ({ prefixCls, level, isStart, isEnd }) => ); }; -export default React.memo(Indent); +function arePropsEqual(prev: IndentProps, next: IndentProps) { + return ( + prev.prefixCls === next.prefixCls && + prev.level === next.level && + areArraysEqual(prev.isStart, next.isStart) && + areArraysEqual(prev.isEnd, next.isEnd) + ); +} + +export default React.memo(Indent, arePropsEqual); diff --git a/src/utils/diffUtil.ts b/src/utils/diffUtil.ts index 8f2372e4..69824d62 100644 --- a/src/utils/diffUtil.ts +++ b/src/utils/diffUtil.ts @@ -43,3 +43,7 @@ export function getExpandRange(shorter: FlattenNode[], longer: FlattenNode[], ke } return longer.slice(longerStartIndex + 1); } + +export function areArraysEqual(a: any[], b: any[]) { + return a.length === b.length && a.every((val, i) => val === b[i]); +}