- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
export interface InputProps {
type?: string;
name?: string;
value?: CommonTypeTuple;
placeholder?: string;
label?: string;
error?: string;
helpText?: string;
block?: boolean;
disabled?: boolean;
onChange?: ChangeHandler<string>;
onBlur?: BlurHandler<string | number>;
}
export const Input = ({
type = "text",
name = "",
placeholder,
error,
block = false,
disabled = false,
onChange = () => {},
onBlur = () => {},
value,
className = "",
...rest
}: InputProps & React.InputHTMLAttributes<HTMLInputElement>) => {
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
onChange(e.target.value, e.target.name);
};
const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {
onBlur(e.target.value);
};
return (
<StyledWrapper block={block}>
<StyledInput
name={name}
type={type}
placeholder={placeholder}
error={error}
disabled={disabled}
onBlur={handleBlur}
onChange={handleChange}
value={value}
className={className}
aria-label="tm-input"
{...rest}
/>
</StyledWrapper>
);
};
export const StyledInput = styled.input<InputProps>`
...
...
onChange
和
onBlur
报错
(e: ChangeEvent<HTMLInputElement>) => void' is not assignable to type '((event: ChangeEvent<HTMLInputElement>) => void) & ChangeHandler<string>'.
Type '(e: React.ChangeEvent<HTMLInputElement>) => void' is not assignable to type 'ChangeHandler<string>'.
Types of parameters 'e' and 'value' are incompatible.
Type 'string' is not assignable to type 'ChangeEvent<HTMLInputElement>'.ts(2322)
index.d.ts(1977, 9): The expected type comes from property 'onChange' which is declared here on type 'IntrinsicAttributes & Pick<Pick<Pick<DetailedHTMLProps<InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "type" | ... 283 more ... | "key"> & { ...; } & InputProps, "type" | ... 288 more ... | "key"> & Partial<...>
e.target.value
这是一个字符串,报告的错误假定它需要两个本地处理程序函数
onChange
和定制
handleChange
不同的签名是一样的。
最佳答案
React.InputHTMLAttributes<HTMLInputElement>
定义 onChange
如 (event: ChangeEvent<HTMLInputElement>) => void)
,并且您正在定义 onChange
如 ChangeHandler<string>
.您在错误消息中看到的类型是 intersection这两种类型中。
您可能想使用 Omit<T, K>
删除重叠的 Prop :
type ReactInput = React.InputHTMLAttributes<HTMLInputElement>;
type InputArgs = InputProps & Omit<ReactInput, keyof InputProps>
export const Input = ({ ...{}, ...rest }: InputArgs) => { ... }
关于reactjs - '(e : ChangeEvent<HTMLInputElement>) => void' is not assignable to type '((event: ChangeEvent<HTMLInputElement>) => void),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60089378/
我正在练习 Java 脚本代码,但在实现此代码时遇到问题。 function f2(){ var a=document.getElementById("a"); var b=document.
我是 html5 和 javascript 的新手,正在使用 html5 和 javascript 编写一个简单的表单。当我在 netbeans 中按运行时,表单按预期显示在 chromo 中,但是当
我正在测试以查看当前获得焦点的元素是否是使用 document.activeElement 的输入。当它返回 [object HTMLInputElement] 时,所以我假设我可以使用下面的逻辑来测
我在 TypeScript 中使用 useRef 有问题。 我想输入它,但出现错误,如下所示: 我的容器组件是: const HeaderContainer: React.FC = () =>
export interface InputProps { type?: string; name?: string; value?: CommonTypeTuple;
仅供引用,我不是 JavaScript 忍者,但当我最近基于 Google map 做了很多事情时,我感觉自己会成为 JavaScript 忍者。 我实现了一张 map 。用户可以搜索谷歌地点并为其放
嗨,我是 Angular 和类型脚本的新手。我需要检查表格是否为空,并根据需要隐藏或显示 div。我试过了, var rows = document.getElementById('associate
JS代码 'use strict'; $(document).ready(function() { }); function change() { document.getElementByI
我正在尝试当文本字段具有焦点时,div 被选择为类:autocomplete,这是一个理解我的想法的例子,在我的真实问题比较复杂。我只需要在确定具有焦点的元素后,选择最近的 div 与 .autoco
DateFunction 在 ID 为 datelate 的文本输入中设置今天的日期。然后,日期作为 object HTMLInputElement 存储在 addLate 函数的 date 变量中。
我有以下 HTML 页面,我需要在其中将来自 HTMLInputElement 的输入值提供给 mine JavaScript 函数。 Mine! mine: function (inp
html代码 Date to Travel javascript代码 对我来说代码看起来很干净,但不知道其中有什么问题 window.onload = function() { docum
我刚开始学习 HTML。对我的一个变量执行 alert() 得到这个结果 [object HTMLInputElement]。 如何获取添加到文本字段中的数据,我的输入类型是文本? 最佳答案 假设您的
我正在遍历表格行中的单元格。每个单元格中都有一个文本框,我想获取文本框的值并将其推送到一个数组中。 function dothing() { var tds = $('#'+selec
我正在尝试从数组中获取输入 id,但不确定是否正确获取数据或出了什么问题,因为我需要获取 id 属性来进行一些操作。首先,我动态创建这个: $('').attr({ type :
我是phonegap的新手。我使用选择查询来显示存储的输入值。下面是我的数据库表。 function populateDB(tx) { tx.executeSql('CREATE TABLE IF N
在我的表单中,我想提供添加另一个位置的功能。当我只出现一个文本框(地址)并且可以显示多个地址文本框时,它正在工作。但现在我尝试添加“城市”文本框,但它不起作用。我以前使用过一个函数,现在我拆分了函数以
这段代码给了我 jquery 中的 objecxt.HTMLInputElement var values = $('input[name=delete]:checked').each(functio
我正在使用 html 和 jquery 开发一个网页。许多页面都有带有多种输入类型文本的表单。我正在尝试开发一个 jquery 函数来控制某些输入是否为空或错误。 我想将所有输入值放入一个数组中。当我
我正在传递隐藏值,并将其放入 JavaScript 函数中。我想将此值传递到另一个页面。在我打印它之前,它给了我 [object HTMLInputElement] $var4 = 1; echo "
我是一名优秀的程序员,十分优秀!