【问题标题】:React Hooks with SyntheticEvent , cant get value from a dropdown list使用 SyntheticEvent 反应 Hooks,无法从下拉列表中获取值
【发布时间】:2021-09-14 13:41:32
【问题描述】:

我是一名正在尝试学习 react typescript 的学生,我遇到了一些问题

所以我需要从下拉列表中获取价值

代码:

var countryOptions = [
     { key: "al", value: "Albania", text: "Albania" },
     { key: "kos", value: "Kosovo", text: "Kosovo" },
];


<Dropdown   
    clearable
    fluid
    multiple
    search
    selection
    options={qytetetOptions}
    value={adresa.qyteti}
/>

我们学到的方法是这样使用 react hooks:

const initializeForm = () => {
    return {
      id: "",
      emri: "",
      mbiemri: "",
      nrTelefonit: "",
      nrTelefonit2: "",
      adrersa: "",
      adresa2: "",
      qyteti: "",
      shteti: "",
    };
  };
const [adresa, setAdresaF] = useState<IAdresaF>(initializeForm);




const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => {
    const { name, value } = event.target;
    setAdresaF({ ...adresa, [name]: value });
};

但这是用于表单输入的,在下拉列表中它说我需要使用 SythneticEvent

有人可以帮助如何从下拉列表中获取价值

【问题讨论】:

  • 你的 Dropdown 组件来自哪个 UI 库?
  • 它来自语义-ui-react

标签: javascript reactjs typescript react-hooks


【解决方案1】:

语义 UI React 的 Dropdown 组件接受 onChange 属性,您可以将处理程序分配给。因此,您从 Dropdown 组件更新状态的代码可能如下所示:

const [adresa, setAdresaF] = useState<IAdresaF>(initializeForm)

const handleQutetyChange = (
    ev: React.SyntheticEvent,
    { value }: any
) => {
    setAdresaF({ ...adresa, qutety: value })
}

...

return (
    ...
    <Dropdown
        onChange={handleQutetyChange}
        ...
        value={adresa.qutety}
    />
    ...
)

很遗憾,您必须将第二个参数输入为anyonChangeType definition 功能过于模糊。

export interface DropdownProps extends StrictDropdownProps {
  [key: string]: any
}

...
onChange?: (event: React.SyntheticEvent<HTMLElement>, data: DropdownProps) => void

虽然你做了更长的路线。将其键入为unknown,然后适当地缩小类型。以custom type predicates 为例。尽管只要您的选项都是事先知道的并且不能在运行时更改,我相信这是不必要的步骤。

【讨论】:

  • 谢谢你,兄弟,它成功了,我们了解到 typescript 是严格输入的,我们需要指定类型,但它适用于任何类型,所以再次感谢你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-25
  • 1970-01-01
  • 1970-01-01
  • 2015-03-02
  • 1970-01-01
  • 2019-04-18
  • 2015-12-21
相关资源
最近更新 更多