diff --git a/src/TabNavList/TabNode.tsx b/src/TabNavList/TabNode.tsx
index 932b32a1..00e4aa02 100644
--- a/src/TabNavList/TabNode.tsx
+++ b/src/TabNavList/TabNode.tsx
@@ -2,6 +2,7 @@ import classNames from 'classnames';
import KeyCode from 'rc-util/lib/KeyCode';
import * as React from 'react';
import type { EditableConfig, Tab } from '../interface';
+import { genDataNodeKey } from '../util';
export interface TabNodeProps {
id: string;
@@ -56,7 +57,7 @@ function TabNode({
) {
setTabSizes(() => {
const newSizes: TabSizeMap = new Map();
tabs.forEach(({ key }) => {
- const btnNode = tabListRef.current?.querySelector(`[data-node-key="${key}"]`);
+ const btnNode = tabListRef.current?.querySelector(`[data-node-key="${genDataNodeKey(key)}"]`);
if (btnNode) {
newSizes.set(key, {
width: btnNode.offsetWidth,
diff --git a/src/util.ts b/src/util.ts
index e6ee069f..c11039b7 100644
--- a/src/util.ts
+++ b/src/util.ts
@@ -16,3 +16,8 @@ export function stringify(obj: Record {
const { container } = render(getTabs({ tabBarStyle: { background: 'red' } }));
expect(container.querySelector('.rc-tabs-nav')).toHaveStyle({ background: 'red' });
});
+
+ it('key contains double quote should not crash', () => {
+ render()
+ })
});