javascript - setInterval 超时后调用父函数
问题描述
在我的反应应用程序中,我使用了一个计时器组件。我希望这个组件在后台运行并在一定时间后调用父函数。代码给出错误。我的代码是
父组件
import React, { Component } from 'react';
import Timer from './timer';
class Parent extends Component {
finish(){
console.log('fininsh')
}
render() {
return (
<div>
<Timer data={this.finish.bind(this)} />
</div>
);
}
}
export default Parent;
定时器组件
import React, { Component } from 'react';
class Timer extends Component {
constructor(props){
super(props);
this.state = {
fin: false
}
}
componentDidMount(){
this.myInterval = setInterval(() => {
this.setState({fin: true})
}, 10000);
}
childfinish = () => {
this.props.data.finish
}
render() {
const {fin} = this.state;
if(fin){
return(
<div>
{this.childfinish};
</div>
)
} else {
return (
<div>
<h1>Counting...</h1>
</div>
)
}
}
}
export default Timer;
错误是
期望一个赋值或函数调用,而是看到一个表达式
解决方案
data
prop 不包含 function finish()
。
{this.childfinish}
从render()
和删除
componentDidMount(){
this.myInterval = setInterval(() => {
this.setState({fin: true})
this.props.data();
}, 10000);
}
推荐阅读
- c# - EFCore 2.0 - Include & ThenInclude : 子集合 -- 孙子集合
- java - 将 Solrj 与 UUID 一起使用
- angular - TypeError:无法读取 angular5-data-table angular 2+ 中 null 的属性“toLowerCase”
- javascript - 尝试编辑 HTML/JavaScript 模板 - 图像更改 onClick,但不是自动图像旋转
- powershell - 如何通过 VSC 将 PowerShell api 部署到 Azure Functions?
- c# - 为什么我每次调用 IEnumerable.Last() 时都会得到另一个参考
- c++ - VS Code - 如何为多个 Win32 设置 c_cpp_properties.json 文件
- r - 为什么 R 中有两个赋值运算符,`<-` 和 `->`?
- r - if() 中的 sparseIndexTracking 0.1.0 失败:需要 TRUE/FALSE 的缺失值
- asp.net-mvc - MVC Core 2.1:找到多个相同类型的自定义属性