Browse Source
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
pull/43238/head
JiaQi
1 year ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
73 additions and
2 deletions
-
components/form/FormList.tsx
-
components/form/__tests__/list.test.tsx
|
|
@ -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(); |
|
|
|
}); |
|
|
|
}); |
|
|
|