reactjs - antd select onChange 函数中的第二个参数是什么?
问题描述
嘿,我有将 onChange 事件向下传递到 AntD 选择输入的容器组件。我想将它传递下来并在输入中使用。
我没有在第二个参数中放入什么类型看起来像这样
var onChange: ((value: string | undefined, option: OptionsType | OptionData | OptionGroupData) => void) | undefined
容器看起来像这样
export const TagsInputContainer = ({ value, onChange }: ContainerProps) => {
const { loading, payload, error } = useQuery(fetchTags({ perPage: PER_PAGE }));
console.log('value in Container', value);
const handleChange = (value: any) => {
console.log('handleChange value', value);
if (value) {
setInputValue(value);
onChange(value);
}
};
return <TagsInput loading={loading} error={error} tags={payload?.results} onChange={handleChange} />;
};
并输入
export const TagsInput = ({ tags, onChange }: Props) => {
const { Option } = Select;
let children: Array<ReactNode> = [];
if (tags) {
children = tags.map((tag: { tag: string }, idx: number) => {
return (
<Option value={tag.tag} key={idx}>
{tag.tag}
</Option>
);
});
}
return (
<Styled.TagsSelect
placeholder="Dodaj tagi"
mode="tags"
onChange={onChange}
maxTagTextLength={INPUT_VALIDATE.tagCharMax}
>
{children}
</Styled.TagsSelect>
);
};
解决方案
第二个参数将传递用户选择的完整选项对象。
第一个参数将只接收选项的值,这通常是您想要的。但有时您可能希望访问选项中设置的所有道具,而不仅仅是值。在这种情况下,您可以在 onChange 处理程序中使用第二个参数。
第二个参数的使用是可选的。不需要你“放东西”在那里,如果你愿意,你可以忽略它。
例如,如果选择的选项如下所示:
<Select.Option key={1} value={3}>
Foobar
</Select.Option>
...从 AntD 到您的 onChange 处理程序的调用将是:
onChange( 3, {key: 1, value: 3, children: 'Foobar'} )
推荐阅读
- sql - 2个日期和文本之间的日期过滤器
- android - SingleChildScrollView 和 Swiper 不能一起工作。有什么解决办法吗?
- javascript - 为什么在这个 curry 函数的实现中使用 bind 是必要的
- android - 如果输入框有很多字段,如何避免在android中的注册屏幕中滚动(需要适合所有型号的单个屏幕)
- java - 如何通过代码在 android Studio 中获取 Sdk 目录?一世
- java - 无法使用 netflix eureka 创建多个实例
- javascript - JavaScript:使用 setInterval 在 2 个不工作的图像之间切换
- node.js - 下载到给定数据缓冲区(NodeJS)的“标准”位置
- module - Apache 特定模块
- django - 计算查询集中的分支