javascript - 警告:React 无法识别 DOM 元素上的 X 属性
问题描述
当我试图传递道具时,我收到了这个错误。很基础的东西。
interface Props extends Omit<React.HTMLAttributes<HTMLElement>, 'color'>, ChakraProps {
handleMoveAll: () => void
}
export const MyWrapper: FC<Props> = (props): JSX.Element => (
<div {...props}>
<IconBox label="Move All" onClick={props.handleMoveAll}>
<MyIcon />
</IconBox>
</div>
)
然后我MyWrapper
在其父组件上调用警告来自的组件。
export const ParentComp: FC<{}> = (): JSX.Element => {
const myFunction = () => console.log('Hit it')
return (
<MyWrapper handleMoveAll={() => myFunction()}>
<p>Child Component</p>
</MyWrapper>
)
}
警告:React 无法识别
handleMoveAll
DOM 元素上的 prop。如果您有意希望它作为自定义属性出现在 DOM 中,请将其拼写为小写字母handlemoveall
。如果您不小心从父组件传递了它,请将其从 DOM 元素中移除。
如果我删除它handleMoveAll={() => myFunction()}
,警告就消失了。
有任何想法吗?
解决方案
问题<div {...props}>
出在MyWrapper
;将handleMoveAll
道具添加到 div 上。你可以做的是这样的:
export const MyWrapper: FC<Props> = (props): JSX.Element => (
const {handleMoveAll, ...rest} = props;
<div {...rest}>
<IconBox label="Move All" onClick={handleMoveAll}>
<MyIcon />
</IconBox>
</div>
)
handleMoveAll
从传入的道具中拉出,同时仍将任何其他道具传递到 div 中。
推荐阅读
- arrays - 将值推入多维数组时出现 TSLint 接口错误
- javascript - 运行 .js 文件的 CronJob 不会将控制台输出到 .txt 或 .log 文件
- c# - 数据网格视图上未显示任何数据
- python - 想要使用经过预训练的 ResNet50 但出现错误“ValueError: Shapes (None, None) and (None, 7, 7, 3) are incompatible”
- css - 如何覆盖 CSS 默认主题 CSS WordPress
- firebase - 检索存储在 Firebase 存储中的图像
- json - 如何在codeigniter中的php中发送json对象值?
- python - scikit-learn 中的 StratifiedKFold 与 KFold
- flutter - 无法加载资产:/data/user/0/com.example.app/app_flutter/localization/en-IN.json 直到热重新加载
- fortran - Fortran 中释放可分配数组的问题