在React中,我使用formik
作为表单。我有如下字段
{({ field }) => {
return (
<Select
{...field}
id="icon"
value={selectedIcon}
onChange={(item) => {
handleSample();
dispatch(
abcd(index, "icon", item.value)
);
}}
options={dropdownData.icons}
styles={{
menuList: (provided) => ({
...provided,
height: "146px",
}),
}}
/>
);
}}
</Field>
在测试中,我尝试了正常的方式,并引用了
fireEvent.change(input, { target: { value: "Test" } })
但是,这不会调用onChange
方法。在这种情况下,变更事件将如何工作?
看看我是怎么做的
export default function Select({ className, disabled, size, ...props }) {
const [, meta, helpers] = useField(props);
const options = props.data;
const defaultValue = options.find((option) => option.value === meta.value);
const componentProps = {
defaultOptions: true,
defaultValue,
isClearable: props.clearable,
dropdownIndicator: 'yes',
options: props.data,
onChange: (option) => {
helpers.setValue(option?.value);
if (props.onChange) {
props.onChange(option);
}
}
};
return (
<ReactSelect {...componentProps}/>
)
}