【发布时间】:2018-08-01 23:49:18
【问题描述】:
我正在尝试在 react/typescript 中呈现动态进度条。我能够在反应中做到这一点,但将其转换为打字稿给了我;
[ts] 类型“Jockey”上不存在属性“setInterval”。 任何
在setInterval 内部调用componentDidMount 时带有警告下划线。
仅使用 react 我在 componentDidMount 中使用了 this.interval = setInterval(this.timer, this.state.interval); 并且它有效,但是使用 typescript 的严格输入,我不知道该怎么做。
Jockey.tsx
import * as React from 'react';
interface Props {
color: string;
avatar: string;
}
interface State {
interval: number;
progress: number;
}
export class Jockey extends React.Component<Props, State> {
constructor(props: Props) {
super(props);
this.state = {
interval: Math.floor(Math.random() * 500),
progress: 0,
};
}
componentDidMount () {
this.setInterval(this.timer, this.state.interval);
}
timer () {
this.setState({ progress: this.state.progress + 1 });
console.log('anyhting');
(this.state.progress >= 99) ? this.setState({ progress: 100 }) : this.setState({ progress: 0 }) ;
}
render() {
return (
<div>
<div className="App-lane">
{/* <img src={ this.props.avatar } alt=""/> */}
<progress value={this.state.progress} color={this.props.color} max="100" />
</div>
</div>
);
}
}
【问题讨论】:
-
从
this.setInterval中删除this -
setInterval是全局window对象的方法,不是任何自定义类 -
谢谢!工作...
-
看起来我在
timer()中没有正确使用this.setState。我似乎在设置progress时遇到问题。
标签: javascript reactjs typescript