react-bootstrap-typeahead 扩展自定义组件,typeahead props 需要 1 个参数

如何解决react-bootstrap-typeahead 扩展自定义组件,typeahead props 需要 1 个参数

我正在尝试使用我开发的库制作一个自定义 typeahead 组件,该组件具有额外的道具来生成一个带有 from 组、标签等的字段。

当我使用下面的代码时,Typeahead props 带有红色下划线,并且出现错误:通用类型“TypeaheadProps”需要 1 个参数。我不确定这个论点应该是什么?

import React from "react";
import FormValidator from "../../utilities/FormValidator";
import {observer} from "mobx-react";
import {
    FormFeedback,FormGroup,FormText,Label
} from "reactstrap";
import {Typeahead,TypeaheadProps} from "react-bootstrap-typeahead";

interface IFormTypeaheadProps extends TypeaheadProps{
    // the form validation class
    formValidator: FormValidator,// the name of the property to edit
    propName: string,// the keyto use to access any error message in formValidator.formErrors
    errorKey?: string,// the label for the text field
    label?: string,// any data prop which overrides default formValidator.dataStore.data prop
    data?: any,// a caption which will show with a <FormText /> element
    caption?: string
}

const FormTypeahead: React.FC<IFormTypeaheadProps> = ({ formValidator,propName,data,label,caption,errorKey,...atts }) => {

    // any validation error message
    const eKey = errorKey || propName;

    return (
        <FormGroup>
            {label ? <Label>{label}</Label> : null}
            <Typeahead
                isInvalid={typeof formValidator.formErrors[eKey] !=='undefined'}
                {...atts} />
            {typeof formValidator.formErrors[eKey] !== 'undefined'
            ? (
                <FormFeedback>{formValidator.formErrors[eKey]}</FormFeedback>
            ) : null}
            {caption ? <FormText>{caption}</FormText> : null}
        </FormGroup>
    )
}

export default observer(FormTypeahead);

enter image description here


似乎参数应该是在 options 属性中传递的选项的接口。目前,在确认这一点之前,我一直使用“任何”。

解决方法

这里有一个例子。基本上,如果您想添加任何不属于您的界面的额外参数,您可以像这样声明它。

type customTypeAheadModel = TypeaheadModel & {
  UserId: string
}

interface IFormTypeaheadProps extends TypeaheadProps<customTypeAheadModel>{
  // the form validation class
 formValidator: FormValidator,// the name of the property to edit
  propName: string,// the keyto use to access any error message in formValidator.formErrors
  errorKey?: string,// the label for the text field
  label?: string,// any data prop which overrides default formValidator.dataStore.data prop
  data?: any,// a caption which will show with a <FormText /> element
  caption?: string
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?