我正在使用Reactjs,我需要使用setTimeout显示一条消息,但它总是向我返回一个数字。有谁知道原因?
这是我的代码:
messageError = () => {
return <h1>Error!</h1>
}
render() {
return (
...
{ this.props.error.code != undefined ?
setTimeout(() => { this.messageError() }, 3000) : null }
谢谢!
我猜你做错了。正如我的理解,你想要别的东西。我给你一个例子,它可能会有所帮助。
class MyComponent {
state = {
error: false,
}
componentDidMount() {
setTimeout(() => {
this.setState({
error: true,
})
}, 3000);
}
renderMessageError() {
return <h1>Error</h1>
}
render() {
if (this.state.error) {
return this.renderMessageError();
}
return null; //
}
}
因为那是应该做的。
setTimeout不会暂停执行指定的时间。它会调度您的函数以便稍后发生,然后返回一个可用于调用该调度的值(通常是一个数字)。
该功能显然无法从未来返回值。
这是异步的,你不能指望它的返回值。该数字是setTimeout的ID,用于清除setTimeout。