javascript - 如何解决“IntrinsicAttributes & Function”类型上不存在“类型属性”?
问题描述
我有一个像这样的父组件
import filterComponent from 'filter/filterComponent'
const reloadHandler = useCallback(
(event: MouseEvent) => {
event.preventDefault();
// my logic
},
[Reload, Fetching]
);
const parent = () => {
return (
<filterComponent reload={reloadHandler} />
)
}
过滤器组件:
export const filterComponent = (filter: Function, reload: Function) => {
return (
<Button onClick={reload} />
)
}
错误:
键入'{重新加载:(e:MouseEvent)=> void;}' 不可分配给类型 'IntrinsicAttributes & Function'。类型“IntrinsicAttributes & Function”上不存在属性“重新加载”
我该如何解决这个问题?
解决方案
我认为它抱怨您访问 FilterComponent 中的属性的方式。试试这个版本:
type FilterComponentProps = {
reload: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void,
};
export const FilterComponent = (props: FilterComponentProps) => {
return <button onClick={props.reload} />;
}
然后是调用它的组件:
function SomeComponent() {
const reloadHandler = React.useCallback(
(event: React.MouseEvent) => {
event.preventDefault();
// my logic
},
// I've removed dependencies as I'm not sure where you take them from
[]
);
return (
<FilterComponent reload={reloadHandler} />
)
}
另请注意,我已更改filterComponent
为小写组件命名空间是为 HTML 原语保留FilterComponent
的
我还为您编写了一个 CodeSandbox(以防万一):https ://codesandbox.io/s/react-typescript-3i7cm
推荐阅读
- javascript - 如何在客户端网页上构建和执行 wasm 代码?
- java - 可以克隆记录吗?
- cluster-computing - SLURM 如何为每个节点启动一次脚本
- reactjs - 关于 React 生命周期函数的问题
- arrays - FindIndex 值连续返回为 -1?
- oracle - 如何检查模式在 oracle 中使用的表空间?
- javascript - Flexbox - 如何将 div 移动到空白空间?
- javascript - 我需要帮助才能恢复默认状态
- javascript - 本地文件路径的 Azure 函数 Node.js REST API 问题
- android - 除非使用 ACTION_OPEN_DOCUMENT_TREE 再次征求用户同意,否则无法使用使用 ACTION_CREATE_DOCUMENT 在共享存储中创建的目录