【问题标题】:React native don't Call PropTypes Warnings?React native 不调用 PropTypes 警告?
【发布时间】:2016-09-01 11:03:02
【问题描述】:

有人可以建议如何删除第三方警告吗? https://facebook.github.io/react/warnings/dont-call-proptypes.html

我不知道如何实现以及将官方文档中提到的代码放在哪里。 他们从 react-bootstrap 获取代码

export default function deprecated(propType, explanation) {
   return function validate(props, propName, componentName) {
if (props[propName] != null) {
      const message = `"${propName}" property of 
         "${componentName}" has       been deprecated.\n${explanation}`;
  if (!warned[message]) {
    warning(false, message);
    warned[message] = true;
  }
}

return propType(props, propName, componentName);
};
}

请逐步写出解决第三方警告的步骤。

谢谢

【问题讨论】:

    标签: javascript reactjs react-native react-router


    【解决方案1】:

    你能在处理 Proptypes 的地方显示你的代码 sn-p 吗?也许某些库甚至 react native 代码会触发这些 React 警告,因此请检查您的 react native 版本是否与正确的 react 版本匹配。

    【讨论】:

    • 这些警告来自第三方库。我不会拖延原型
    【解决方案2】:

    如果您只想阻止“黄框”调试助手出现,您可以使用console.ignoredYellowBox 属性将不应显示的前缀列入白名单:

    const existingIgnoreList = console.ignoredYellowBox;
    const prefixesToIgnore = [
      'Warning: "foo" property of "Bar"'
    ];
    
    console.ignoredYellowBox = existingIgnoreList
      ? existingIgnoreList.concat(prefixesToIgnore)
      : prefixesToIgnore;
    

    基于 cmets 编辑:如果你想真正完全抑制 console.error 消息,没有官方和合法的方法可以做到这一点。

    可以做的是猴子修补console.error 方法并过滤掉该特定消息。修补需要在评估您的应用程序代码之后,但在安装有问题的组件之前进行。

    一个好地方是你的根组件的componentWillMount处理程序:

    componentWillMount() {
      console.__error = console.error;
      console.error = function overrideConsoleError(...args) {
        if (!typeof args[0] === 'string' || !args[0].startsWith('Warning: "foo" property of "Bar"')) {
          console.__error(...args);
        }
      };
    }
    

    但是请,请不要真的这样做。这是一个非常糟糕的主意:)

    【讨论】:

    • 是的,有一个黄色框,但官方文档提出了其他建议。我更愿意遵循他们在官方文档中提到的建议。您可以从上面的代码中提出任何建议。您已经在stackoverflow上提供的解决方案stackoverflow.com/questions/38907803/…
    • 实施此解决方案后,我仍然在调试控制台中收到红色警告。
    • 问题是有问题的代码不在您自己的代码库中,而是在第三方模块中。您问题中的文档是图书馆作者应该做的事情。为了修复它,您需要分叉该库,修补问题的原始原因,提交拉取请求,等待新版本等。当您这样做时,如果您需要删除错误,我添加了一种有趣且有创意的方法来解决问题:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 2019-02-11
    • 2016-03-14
    • 1970-01-01
    • 2020-01-06
    • 2019-12-18
    • 2023-04-03
    相关资源
    最近更新 更多