Javascript React js性能工具插件抛出;无法读取属性';计数';“未定义”的定义;

Javascript React js性能工具插件抛出;无法读取属性';计数';“未定义”的定义;,javascript,performance,reactjs,Javascript,Performance,Reactjs,我对如何利用React的性能工具感到困惑。我目前的使用情况如下所示: var Perf = React.addons.Perf; Perf.start(); this.setState({ newState: newStateObject, }, function(){ Perf.printInclusive(); Perf.stop(); }); 这不会在页面上呈现任何内容,并且会脱口而出 Uncaught TypeError: Cannot read propert

我对如何利用React的性能工具感到困惑。我目前的使用情况如下所示:

var Perf = React.addons.Perf;
Perf.start();
this.setState({
    newState: newStateObject,
}, function(){
    Perf.printInclusive();
    Perf.stop();
});
这不会在页面上呈现任何内容,并且会脱口而出

Uncaught TypeError: Cannot read property 'counts' of undefined 

您的错误堆栈跟踪似乎来自其他原因

首先,您首先需要调用
Perf.stop()
,然后尝试调用
printclusive()
。它不会在页面上打印任何内容,它应该在浏览器的控制台中弹出一个漂亮的表格

但是,尝试Perf工具最简单的方法是打开浏览器的控制台并手动在
window.React.addons.Perf.start()中键入它之后是您的操作,最后是
window.React.addons.Perf.stop()
window.React.addons.Perf.printExclusive()或您正在使用的任何API调用。

请参阅

它看起来像
Perf.start()
只有在组件生命周期之外调用时才起作用。因此,在启动应用程序之前调用它,或者在触发试图监视的事件之前直接从浏览器控制台调用它。

看起来Perf.start()应该放在渲染之外,所以我在渲染回调函数中添加了Perf.stop()

下面的代码,希望能有所帮助:)

Perf.start();
ReactDOM.render(
,
document.getElementById('app'),()=>{
性能停止();
var-measurements=Perf.getLastMeasurements();
console.table(Perf.getLastMeasurements());
性能(包括测量);
性能(测量);
性能(测量);
性能打印(测量);
}
);

尝试先调用
Perf.stop()
,然后调用
Perf.printclusive()
。你也应该在这里发布整个追踪。改变顺序没有什么区别。日志屏幕截图:您确定此问题是由性能触发的吗?在错误消息中,没有任何指示。是否在HTML中的某个位置输出
counts
值?每个perf summary函数都调用measurements.count。度量值似乎未定义。您是否解决了此问题?我也看到了同样的事情。这是密码。希望他们改进这方面的文档。这不是一件容易找到的事情。为什么在我在控制台中调用'Perf.start()'后它会打印undefined?你能告诉我我做错了什么吗?当我在控制台中调用window.React.addons.Perf.start()时,我得到了一个错误,无法读取undefined(…)的属性'addons',谢谢大家的建议Hey@Davet,请确保您使用的是正确的React版本。开箱即用的React没有插件。检查并确保包括
。让我知道它是否有效?
Perf.start();

ReactDOM.render(
    <App  />,
  document.getElementById('app'),()=>{
    Perf.stop();
    var measurements = Perf.getLastMeasurements();
    console.table(Perf.getLastMeasurements());
    Perf.printInclusive(measurements);
    Perf.printExclusive(measurements);
    Perf.printWasted(measurements);
    Perf.printDOM(measurements);
  }
);