React perf 总是打印空数组

React perf always prints empty Array

我正在尝试使用 React 性能工具测试我的应用程序的性能。问题是它不起作用。 我叫

Perf.start()

Perf.stop()

Perf.printWasted()

在控制台中有效(没有控制台错误或警告),但 printWasted() 总是 returns 空数组和一条消息

Total time: 0.00 ms

这也适用于 printInclusive()printExclusive() 等其他函数 可能是什么问题? P.S 我正在使用 react-router,react perf 的性能如何?也许这会导致一些问题? 此外,process.env.NODE_ENV 未设置为生产环境,我正在使用 React 0.13.3

我遇到了与此处所述相同的问题 - 不过,在我的情况下,这是一个愚蠢的错误。您(或将来的其他人)可能犯了同样的愚蠢错误,所以我想我应该解释一下我的所作所为。

我正在编写一些测试代码,将 React 库直接加载到页面中 -

<script src="/Script/ThirdParty/react-15.0.0.js"></script>
<script src="/Script/ThirdParty/react-dom-15.0.0.js"></script>

当我想获取有关页面执行情况的信息时,我还加载了 "addons" 脚本 -

<script src="/Script/ThirdParty/react-15.0.0.js"></script>
<script src="/Script/ThirdParty/react-dom-15.0.0.js"></script>
<script src="/Script/ThirdParty/react-with-addons-15.0.0.js"></script>

然后刷新页面,转到控制台并输入

React.addons.Perf.start()

我与页面进行了交互,以便重新呈现然后输入

React.addons.Perf.stop()
React.addons.Perf.printWasted()

我总是得到

Array[0]

Total time: 0.0ms

错误是插件脚本不应该加载除了到主要的 React 脚本之外,它应该被加载而不是 -即

<script src="/Script/ThirdParty/react-with-addons-15.0.0.js"></script>
<script src="/Script/ThirdParty/react-dom-15.0.0.js"></script>

更正后,我开始从 perf 工具方法中获取结果。

我在使用 webpack's extarnals as suggested in this quickstart: https://www.typescriptlang.org/docs/handbook/react-&-webpack.html

时偶然发现了同样的问题
// webpack.conf.js:
//...
externals: {
    "react": "React",
    "react-dom": "ReactDOM"
}

// index.js
// ...
window.Perf = require('react-addons-perf')

// index.html
<script src="/js/react/dist/react.js"></script>
<script src="/js/react-dom/dist/react-dom.js"></script>
<script src="/js/bundle.js" charset="UTF-8"></script>

事实证明,此配置还会导致 Perf 结果始终为空。删除 externals 条目(从而将 react 放入 webpack 的包中)解决了这个问题。结果证明没有构建时间性能差异。