我有一个按钮组件。我只是将onClick我定义的许多可选道具中的一个道具传递给它:
const Button = (props: ButtonProps) => {
const handleClick: React.MouseEventHandler<HTMLButtonElement | HTMLAnchorElement> = e => {
props.onClick(e);
}
return (
<StyledButton onClick={handleClick}>
{props.children}
</StyledButton>
);
};
Run Code Online (Sandbox Code Playgroud)
然后我像这样使用它:
<Button onClick={(e) => {
console.log(e);
}}>Click me!</Button>
Run Code Online (Sandbox Code Playgroud)
现在如何根据所提到的错误,对象可能是未定义的?我清楚地将函数传递给它,并且根据类型定义也是如此。所以,我将一个对象传递给它。够简单!
...
onClick?: React.MouseEventHandler<HTMLElement>
...
Run Code Online (Sandbox Code Playgroud)
我最近在这个项目中添加了一些更严格的检查,相关的检查是:
"strictFunctionTypes": true,
"strictNullChecks": true
Run Code Online (Sandbox Code Playgroud)
strict:true 已经存在,此错误从未发生。
这里有什么问题?
更新 - 添加的类型
export interface IBaseButtonProps {
type?: ButtonType;
disabled?: boolean;
size?: ButtonSize;
block?: boolean;
loading?: boolean | { delay?: number };
icon?: string;
className?: string;
prefixCls?: string;
children?: React.ReactNode; …Run Code Online (Sandbox Code Playgroud) 根据Pick @ typescriptlang.org的定义,它仅为提到的属性构造一个新类型。Exclude @ typescriptlang.org与它相反。
我见过以下用法
export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
Run Code Online (Sandbox Code Playgroud)
但我不太明白。我们本可以简单Exclude地忽略非必填字段并构建一种新类型的字段。为什么组合Pick和Exclude用作Omit?
另一个例子:
function removeName<Props extends ExtractName>(
props: Props
): Pick<Props, Exclude<keyof Props, keyof ExtractName>> {
const { name, ...rest } = props;
// do something with name...
return rest;
}
Run Code Online (Sandbox Code Playgroud)
上面的返回类型不能用Excludeas重写Exclude<Props, ExtractName>吗?
在关于C++的书籍中,当我们在C++中使用模板时,为什么我们会教我们使用函数重载?
展示模板的有效(和正确)使用不是更好吗?与大多数C++书籍中教授函数重载的地方相反?
或者,是否有充分的理由使用一个而不是另一个?
我不能理解这个陈述 - 在谷歌搜索后不是eveN
pv_no_list :='23,34,45,56';
SELECT DISTINCT REGEXP_SUBSTR (pv_no_list,
'[^,]+',
1,
LEVEL)
no_list
FROM DUAL
CONNECT BY REGEXP_SUBSTR (pv_no_list,
'[^,]+',
1,
LEVEL) IS NOT NULL
好的,这个命令不起作用
create user username identified by password with admin option ;
它会抛出一个错误 missing or invalid option
我以系统身份登录.我试过搜索Oracle文档,他们编写了相同的命令.我在这做错了什么?
好吧,我试过了
<?php echo get_the_title('About Us');?>
但是代码不起作用.我正在使用wordpress 4.1.这应该有效,但事实并非如此.wordpress是否更新了这些功能?
给定一个3乘3表,我想为第3列的所有单元格添加一个类.
我试过了
$( 'td:eq(3)' ).addclass('special');
$( 'td:eq(5)' ).addclass('special');
$( 'td:eq(8)' ).addclass('special');
Run Code Online (Sandbox Code Playgroud)
但问题是编写3行代码.一行代码可以做到吗?
鉴于此,React有Fragments,而官方的github 线程也没有提供任何解决方案。
Vuejs中的解决方法是什么。这可能有助于开发人员从React后台迁移到Vuejs,即谁更喜欢渲染函数样式和JSX?
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 …Run Code Online (Sandbox Code Playgroud) typescript ×3
javascript ×2
oracle ×2
reactjs ×2
sql ×2
babeljs ×1
c++ ×1
jquery ×1
oracle10g ×1
oracle11g ×1
overloading ×1
page-title ×1
templates ×1
vue.js ×1
vuejs2 ×1
wordpress ×1