【问题标题】:What is the second argument in antd select onChange function?antd select onChange 函数中的第二个参数是什么?
【发布时间】:2020-12-23 20:11:50
【问题描述】:

嘿,我有将 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>
  );
};

【问题讨论】:

    标签: reactjs typescript antd react-hook-form


    【解决方案1】:

    第二个参数将传递用户选择的完整选项对象

    第一个参数将只接收选项的,这通常是您想要的。但有时您可能希望访问选项中设置的所有道具,而不仅仅是值。在这种情况下,您可以在 onChange 处理程序中使用第二个参数。

    第二个参数的使用是可选的。不需要你在里面“放东西”,如果你愿意,你可以忽略它。

    例如,如果选择的选项如下所示:

    <Select.Option key={1} value={3}>
        Foobar
    </Select.Option>
    

    ...AntD 对您的 onChange 处理程序的调用将是:

    onChange( 3, {key: 1, value: 3, children: 'Foobar'} )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-25
      • 1970-01-01
      • 2014-08-23
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      • 2010-11-29
      相关资源
      最近更新 更多