未知的道具 - 反应和材料 - ui

时间:2016-07-04 14:30:41

标签: javascript reactjs react-jsx material-ui

目前我正在使用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.

3 个答案:

答案 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分支。