reactjs - React 组件不会因为 setInterval 而停止获取数据
问题描述
我setInterval
用来轮询请求并使我的应用程序实时,我认为这可能是获取请求不断出现的罪魁祸首。这是我的反应组件:
export default class ChatBox extends Component<ChatBoxProps, ChatBoxState> {
interval = setInterval(() => this.fetchComments(), 500)
state = {
comments: [],
content: '',
}
componentDidMount () {
this.interval = setInterval(() => this.fetchComments(), 500)
this.scrollToBottom()
}
componentDidUpdate () {
this.scrollToBottom()
}
componentWillUnmount () {
clearInterval(this.interval)
}
fetchComments = () => {
fetchComments().then(comments => {
this.setState({ comments })
})
}
}
有没有办法防止这种行为?
解决方案
你错过了这个时间间隔。您设置了两个间隔。请至少删除一个。您已清除 this.interval 而不是间隔。
export default class ChatBox extends Component<ChatBoxProps, ChatBoxState> {
state = {
comments: [],
content: '',
}
componentDidMount () {
this.interval = setInterval(() => this.fetchComments(), 500)
this.scrollToBottom()
}
componentDidUpdate () {
this.scrollToBottom()
}
componentWillUnmount () {
clearInterval(this.interval)
}
fetchComments = () => {
fetchComments().then(comments => {
this.setState({ comments })
})
}
}
推荐阅读
- firebase - Firebase/Google 分析与 Firebase 功能共享
- python - Librosa Mel-频谱图对数形状
- javascript - AngularJS ngClass 附加动态类的条件?
- mysql - 第 18 行的错误 1227 (42000):访问被拒绝,MYSQL 8 导入表
- java - 无法识别的选项:Java 独立项目、VSCode 中显示的 -ea、--enable-preview 错误
- java - gui的问题
- ios - Swift - 没有数据时 UISearchBar 不显示结果消息
- python - 如何使用外键和 Django 将模型链接在一起?
- python - 如何找到具有目标扩展名列表的文件编号,例如:.txt、.pdf 等,并使用 python 为当前目录和子目录分别打印
- react-native - 如何在 React Native 中集成 Paytm 集成