相关疑难解决方法(0)

当 React.Dispatch<React.SetStateAction<string>> 不被接受时,如何为 setState 函数定义 TypeScript 类型?

我有一个带有输入元素的 React DatePicker 组件。为了处理 onChange 事件,我定义了 onChangeHandler 函数。但是,当我想在 onChangeHandler 中定义作为参数传递的所有函数的类型时,我收到以下错误:

“(value: string) => void”类型的参数不可分配给“Dispatch”类型的参数。参数“value”和“value”的类型不兼容。“SetStateAction”类型不能分配给“string”类型。类型 '(prevState: string) => string' 不可分配给类型 'string'.ts(2345

当我将函数定义为“any”时,此错误消失,但当然我们不希望代码中包含任何内容:)。

下面是我的设置。我的主应用程序中有一个名为 Datepicker 的输入组件,它从主应用程序获取状态。

const [value, setValue] = useState('');

它作为道具传递给 DatePicker 组件,如下所示:

  return (
        <form>
            <label htmlFor="date-picker-input">Date:</label><br />
            **<DatePicker value={value} setValue={setValue} dateFormat="YYYY/MM/DD" />**
            <button type="submit" value="Submit">Submit</button>
        </form>
);
Run Code Online (Sandbox Code Playgroud)

DatePicker 组件看起来像这样:

    import onChangeHandler from "../utility/onChangeHandler";

  interface IDatePickerProps {
   applicationMode?: boolean;
   value: string;
   setValue: (value: string) => void;
   dateFormat: DateFormat;}  
    
    const DatePicker: React.FC<IDatePickerProps> = (props) => {
           const { value, setValue, dateFormat …
Run Code Online (Sandbox Code Playgroud)

javascript syntax typescript reactjs

4
推荐指数
2
解决办法
7084
查看次数

标签 统计

javascript ×1

reactjs ×1

syntax ×1

typescript ×1