mirror of
https://gitee.com/ant-design/ant-design.git
synced 2024-11-30 02:59:04 +08:00
fix: error reported when the name of Form.List is 0 (#43199)
* fix: error reported when the name of Form.List is 0 * chore: add test case
This commit is contained in:
parent
f0059cebc2
commit
c3225c0720
@ -1,8 +1,8 @@
|
||||
import { List } from 'rc-field-form';
|
||||
import type { StoreValue, ValidatorRule } from 'rc-field-form/lib/interface';
|
||||
import * as React from 'react';
|
||||
import { ConfigContext } from '../config-provider';
|
||||
import warning from '../_util/warning';
|
||||
import { ConfigContext } from '../config-provider';
|
||||
import { FormItemPrefixContext } from './context';
|
||||
|
||||
export interface FormListFieldData {
|
||||
@ -35,7 +35,12 @@ const FormList: React.FC<FormListProps> = ({
|
||||
children,
|
||||
...props
|
||||
}) => {
|
||||
warning(!!props.name, 'Form.List', 'Miss `name` prop.');
|
||||
warning(
|
||||
typeof props.name === 'number' ||
|
||||
(Array.isArray(props.name) ? !!props.name.length : !!props.name),
|
||||
'Form.List',
|
||||
'Miss `name` prop.',
|
||||
);
|
||||
|
||||
const { getPrefixCls } = React.useContext(ConfigContext);
|
||||
const prefixCls = getPrefixCls('form', customizePrefixCls);
|
||||
|
@ -262,4 +262,70 @@ describe('Form.List', () => {
|
||||
|
||||
errorSpy.mockRestore();
|
||||
});
|
||||
|
||||
it('no warning when name is 0', () => {
|
||||
const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
|
||||
|
||||
render(
|
||||
<Form>
|
||||
<Form.List name={0}>
|
||||
{(fields) =>
|
||||
fields.map((field) => (
|
||||
<Form.Item {...field} key={field.key}>
|
||||
<Input />
|
||||
</Form.Item>
|
||||
))
|
||||
}
|
||||
</Form.List>
|
||||
</Form>,
|
||||
);
|
||||
|
||||
expect(errorSpy).not.toHaveBeenCalled();
|
||||
|
||||
errorSpy.mockRestore();
|
||||
});
|
||||
|
||||
it('warning when name is empty array', () => {
|
||||
const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
|
||||
|
||||
render(
|
||||
<Form>
|
||||
<Form.List name={[]}>
|
||||
{(fields) =>
|
||||
fields.map((field) => (
|
||||
<Form.Item {...field} key={field.key}>
|
||||
<Input />
|
||||
</Form.Item>
|
||||
))
|
||||
}
|
||||
</Form.List>
|
||||
</Form>,
|
||||
);
|
||||
|
||||
expect(errorSpy).toHaveBeenCalled();
|
||||
|
||||
errorSpy.mockRestore();
|
||||
});
|
||||
|
||||
it('warning when name is null', () => {
|
||||
const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
|
||||
|
||||
render(
|
||||
<Form>
|
||||
<Form.List name={null!!}>
|
||||
{(fields) =>
|
||||
fields.map((field) => (
|
||||
<Form.Item {...field} key={field.key}>
|
||||
<Input />
|
||||
</Form.Item>
|
||||
))
|
||||
}
|
||||
</Form.List>
|
||||
</Form>,
|
||||
);
|
||||
|
||||
expect(errorSpy).toHaveBeenCalled();
|
||||
|
||||
errorSpy.mockRestore();
|
||||
});
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user