Reactjs 我怎样才能抑制“我怎么能抑制”呢;标签<;一些标签>;在此浏览器中无法识别;反应中的警告?

Reactjs 我怎样才能抑制“我怎么能抑制”呢;标签<;一些标签>;在此浏览器中无法识别;反应中的警告?,reactjs,warnings,Reactjs,Warnings,我在React中使用了带有自定义标记名的元素,并得到了这些错误的墙。关于主题()有一个GitHub问题,其中有人指出: 这是React 16中的新警告消息。与动画/反应动画无关,此警告可以安全忽略 可以安全地忽略它是很好的,但是当我的代码在控制台中充满无用的错误消息时,它仍然无法通过仔细检查 如何抑制这些警告?我不相信有一种内置方法可以抑制错误消息 警告消息已正确记录。您可以直接从dom中删除错误消息。对于这样一个小的更改,也许使用类似的东西会很有用,因此您不必维护fork。更新: 使用正确的解

我在React中使用了带有自定义标记名的元素,并得到了这些错误的墙。关于主题()有一个GitHub问题,其中有人指出:

这是React 16中的新警告消息。与动画/反应动画无关,此警告可以安全忽略

可以安全地忽略它是很好的,但是当我的代码在控制台中充满无用的错误消息时,它仍然无法通过仔细检查


如何抑制这些警告?

我不相信有一种内置方法可以抑制错误消息


警告消息已正确记录。您可以直接从dom中删除错误消息。对于这样一个小的更改,也许使用类似的东西会很有用,因此您不必维护fork。

更新:

使用正确的解决方案查看@triple的答案:

原始名称:

我不是说你真的应该这么做,但你可以钩住
控制台。错误
并在
反应动画
加载之前的某个地方过滤此消息:

const realError = console.error;
console.error = (...x) => {
  // debugger;
  if (x[0] === 'Warning: The tag <g> is unrecognized in this browser. If you meant to render a React component, start its name with an uppercase letter.') {
    return;
  }
  realError(...x);
};
const realError=console.error;
console.error=(…x)=>{
//调试器;
if(x[0]=='警告:此浏览器中无法识别标记。如果要呈现React组件,请以大写字母开头其名称。“){
返回;
}
realError(…x);
};

它似乎对您至少链接的GitHub问题中发布的内容起到了作用:3

我找到了解决此问题的潜在方法-如果您使用的是插件(可能在其他情况下),则可以使用
is
属性


使用X3d时发现-只需编写
作品

我的解决方案是创建信封组件,该组件使用所需的类呈现

import React, {Component, DetailedHTMLFactory, HTMLAttributes} from "react";
import classNames from "classnames";

export default class SimpleTagComponent extends Component<SimplePropTypes>{
    baseClassName = 'simpleComponent'

    render() {
        return React.createElement(
            'div',
            {
                ...this.props,
                className: classNames(this.baseClassName, this.props.className),
            },
            this.props.children
        );
    }
}

type SimplePropTypes = HTMLAttributes<HTMLDivElement>

export class MyTag extends SimpleTagComponent {
    baseClassName = 'my'
}
import React,{Component,DetailedHTMLFactory,HTMLAttributes}来自“React”;
从“类名”中导入类名;
导出默认类SimpleTagComponent扩展组件{
baseClassName='simpleComponent'
render(){
返回React.createElement(
"div",,
{
…这是道具,
className:className(this.baseClassName,this.props.className),
},
这是道具
);
}
}
类型SimplePropTypes=HTMLAttributes
导出类MyTag扩展SimpleTagComponent{
baseClassName='my'
}

您想在开发过程中消除污染吗?因为这些警告不应该出现在产品构建中,这是一个相当大的警告墙。页面上每种类型的元素对应一个。我想在开发中消除污染。到目前为止,我找到的最简单的解决办法是在每个可能的标签前面加上“x-”。关于html中的x标记,有一条鲜为人知的古老规则,规定任何以“x-”开头的标记都可以使用。您在组件中呈现的是什么标记我不再参与该项目,因此我无法验证这是否有效,但这似乎是解决问题的一个很好的方法。如果把它放在dev env环境的后面,它看起来会工作得很好,而不会损害任何东西。这是一个黑客程序,但我喜欢它+我可以确认一下。这应该是公认的答案。通过向自定义元素添加“is”标记,我还成功地删除了警告。任何值都有效,例如:is=“custom”。即使只有一个空间也足够了。如果有人在这里,我可以通过使用webview来解决这个问题。