Skip to content

Commit 6c194f3

Browse files
committed
🐛 Fix duplicated Menu.Item key cause scroll bug
close ant-design/ant-design#16181
1 parent f9563a0 commit 6c194f3

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

src/MenuItem.jsx

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,19 @@ export class MenuItem extends React.Component {
4949
this.callRef();
5050
}
5151

52-
componentDidUpdate() {
53-
const { active, parentMenu } = this.props;
54-
if (active && this.node) {
55-
scrollIntoView(this.node, ReactDOM.findDOMNode(parentMenu), {
56-
onlyScrollIfNeeded: true,
57-
});
52+
componentDidUpdate(prevProps) {
53+
const { active, parentMenu, eventKey } = this.props;
54+
// 在 parentMenu 上层保存滚动状态,避免重复的 MenuItem key 导致滚动跳动
55+
// https://github.com/ant-design/ant-design/issues/16181
56+
if (!prevProps.active && active && !parentMenu[`scrolled-${eventKey}`]) {
57+
if (this.node) {
58+
scrollIntoView(this.node, ReactDOM.findDOMNode(parentMenu), {
59+
onlyScrollIfNeeded: true,
60+
});
61+
parentMenu[`scrolled-${eventKey}`] = true;
62+
}
63+
} else if (parentMenu[`scrolled-${eventKey}`]) {
64+
delete parentMenu[`scrolled-${eventKey}`];
5865
}
5966
this.callRef();
6067
}

0 commit comments

Comments
 (0)