Material-ui:警告:未知的事件处理程序属性`onKeyboardFocus`。它会被忽略

问题描述 投票:6回答:1

更详细的追踪:

warning.js:33 Warning: Unknown event handler property `onKeyboardFocus`. It will be ignored.
    in div (created by IconMenu)
    in div (created by IconMenu)
    in IconMenu (created by DropdownMenu)
    in div (created by DropdownMenu)

我有一个带有IconButtonElement道具的IconMenu。出于某种原因,它一直在抛出这个警告。为什么?它是什么?

触发的示例代码是:

<IconMenu
    iconButtonElement={
        <div>
            <IconButton onClick={this.handleTouchTap}>
                <div >
                    <img src={require("../../settingsicon.svg")}/>
                </div>
            </IconButton>
        </div>}
    open={this.state.open}
    anchorOrigin={{horizontal: "right", vertical: "bottom"}}
    targetOrigin={{horizontal: "right", vertical: "top"}}
>
    <MenuItem
        className={someClass}
        onClick={this.handleLogOutClick}
    >
        <span className={someClass}Hello</span>
    </MenuItem>
    <Divider className={someClass}/>
    <MenuItem className={someClass}>
        <span className={someClass}>Goodbye</span>
    </MenuItem>
</IconMenu>

这是一个非常简单的例子,几乎从带有一些函数的文档中复制粘贴到菜单项,但没有任何东西应该抛出这样的错误。即使我做了一个完整的准系统示例 - 它仍然会发出警告。每次页面加载时都在控制台中有点难看:)

reactjs typescript material-ui
1个回答
5
投票

IconMenu将onKeyboardFocus道具传递给iconButtonElement中定义的元素,如果它是一个React组件(如Iconbutton,如the docs建议的那样)会很好,但是警告的发生是因为你将它包装在div中并且onKeyboardFocus不是支持的DOM事件(它是IconButton API中的属性)。

你应该删除iconButtonElement中的外部div。

onKeyboardFocus默认为无操作函数,无条件传递。由于你没有将它指定为IconMenu的道具,如果你在iconButtonElement中移除包装div,效果将是相同的:它什么也不做,但警告将不再发生。

如果你正在使用onKeyboardFocus道具,删除div或用另一个将这个道具传递给它的孩子的组件替换它将是确保它到达IconButton的唯一方法。

我不会提交问题,因为已经提交并关闭了一对夫妇:

© www.soinside.com 2019 - 2024. All rights reserved.