目前我正在使用react和material-ui,我在我的组件中有以下代码。
<Dialog
title="Dialog With Actions"
actions={actions}
modal={false}
open={this.state.open}
onRequestClose={this.handleClose}>
Are you sure that you want to proceed?
</Dialog>
我已导入
import React from 'react';
import Dialog from 'material-ui/Dialog';
import FlatButton from 'material-ui/FlatButton';
但我总是收到以下错误消息
Warning: Unknown prop `onKeyboardFocus` on <button> tag. Remove this prop from the element.
Warning: Unknown prop `keyboardFocused` on <button> tag. Remove this prop from the element.
答案 0 :(得分:3)
使用react-tap-event-plugin解决此问题。安装完成后 -
import injectTapEventPlugin from 'react-tap-event-plugin';
injectTapEventPlugin();
答案 1 :(得分:2)
首先,这是一个警告而不是错误消息,即您的代码仍然有效。如果您按照警告消息中的link进行操作,则可以找到:
如果您尝试渲染DOM,则会触发unknown-prop警告 具有不被React识别为合法DOM的道具的元素 属性/属性。您应该确保您的DOM元素不会 有虚假的道具漂浮在周围。
有更多细节和可能的原因,但如果我必须推测你将所有道具传递给按钮元素。
同样有趣的是注释旁边的评论:
对于任何好奇/想知道为什么存在这种新警告的人......
历史上,React维护了所有有效DOM的白名单 属性,我们将剥离无法识别的属性。这种方法 有几个主要缺点:
- 性能:这意味着我们必须对每个DOM元素的每个道具进行检查,检查道具是否有效,并剥离 道具,如果不合法。这很愚蠢,因为大部分都是 元素是完全安全的(没有非法属性),因此 检查只是浪费了CPU周期。
- 旧技术迫使我们维护所有可能DOM属性的巨大白名单。维持这是一种痛苦,但更多的是 重要的是,如果我们不小心错过了一个或浏览器供应商添加一个新的 一,这意味着在我们更新白名单之前不能使用道具
- 旧技术不太灵活,因为无法呈现非标准属性。虽然呈现非标准 不推荐使用属性(您应该使用数据属性 相反),有时需要的情况/框架 它。很糟糕,React以前无法支持它。
当我们逐步删除这个白名单时,我们需要给人们一个 清理现有应用程序的机会。这样,升级了 不会导致我们向DOM倾倒大量的意外道具。
修改强>: 很可能这是来自你正在使用的库的jsx(material-ui)检查你是否使用最新版本,或者你是否应该尽快解决它
答案 2 :(得分:0)
这是材料的问题 - 他们已经fixed。等待0.15.2
发布或立即获取master
分支。