【发布时间】:2018-05-20 11:22:09
【问题描述】:
我有一个反应应用程序。该代码确实可以完美运行,但在使用它之后。它开始变慢。稍等片刻即可再次使用。
当你按下按钮时,我使用 socketio 发出消息。
多次使用后函数调用耗时较长。
函数调用是websocket.js 的一部分。但是,当您深入研究函数时,似乎反应渲染需要更长的时间。
需要大量时间的函数。
所以 react 需要很多时间来渲染视图。我只能认为我不会删除会占用大量内存并因此减慢渲染过程的内容。在图片上您看到它在文件react-dom.development.js 中,在为生产构建时也会出现此问题。
import React, { Component } from 'react';
import Card from './Card.js'
class Game extends Component {
constructor(props) {
super(props);
this.state = {
socket: this.props.socket,
card: {
"name": "",
"cardValues": {}
}
}
this.props.socket.emit("startGame");
}
render() {
let {socket, card} = this.state;
socket.on("startGame", (data) => this.setState({
card: data["card"],
}))
socket.on("nextCard", (data) => this.setState({
card: data["nextCard"],
}))
return (
<div className="Game">
<p>GAME</p>
<Card socket={socket} card={this.state.card}/>
</div>
);
}
}
export default Game;
这部分使用Card类。
import React, { Component } from 'react';
class Card extends Component {
constructor(props) {
super(props);
this.state = {
socket: this.props.socket,
}
}
chooseCardValue = (value) => {
this.state.socket.emit("chooseCard", {"cardValue": value});
}
render() {
let card = this.props.card;
return (
<div className="Card">
<h3 className="Country">{card["name"]}</h3>
<ul>
{
Object.keys(card["cardValues"]).map((value, i) => {
return <li key={i}><button onClick = {
this.chooseCardValue.bind(null, value)
}>{value}: {card["cardValues"][value]}</button></li>
})
}
</ul>
</div>
);
}
}
export default Card;
在这里定义按钮。当你点击按钮时,它会触发函数chooseCardValue,随着时间的推移会变慢。
为什么会变得这么慢,是什么原因?
我试图只包含可能相关的部分。为了以防万一,整个课程都可以在这里找到:https://lpaste.net/3474101090415280128
【问题讨论】:
-
有人对我的问题投了反对票。我不知道为什么,非常感谢您的反馈,所以我知道我可以做些什么来改进我的问题。
-
我不知道为什么这个问题被否决了,这是一个非常详细的问题,有很好的例子。我一直在寻找这个,你的问题让我找到了答案。谢谢
标签: javascript reactjs rendering