javascript - 在反应类基础组件中设置 setTimeOut
问题描述
Plaese 我想在我的类基础组件中设置时间输出。尝试不同的方法,但仍然没有奏效。我希望 setTimeout 在指定秒后调用 nextClick/onClickI 但是,仍然不明白如何去做。请帮忙,如果你有一个想法。下面是组件代码...
class AbCarousel extends Component {
state = {
data: []
}
myRef = React.createRef();
getData = async () => {
const res = await fetch('aboutdata.json');
const data = await res.json();
this.setState({data: data})
}
componentDidMount() {
this.getData();
}
prevClick = () => {
const slide = this.myRef.current;
slide.scrollLeft -= slide.offsetWidth;
if (slide.scrollLeft <= -0){
slide.scrollLeft = slide.scrollWidth;
}
};
nextClick = () => {
const slide = this.myRef.current;
slide.scrollLeft += slide.offsetWidth;
if (slide.scrollLeft >= (slide.scrollWidth - slide.offsetWidth)) {
slide.scrollLeft = 0;
}
};
render() {
const { data } = this.state;
return (
<div className="wrapper">
<div className="app" ref={this.myRef}>
<AbCard data={data} />
</div>
<div className="row">
<div className="prev" onClick={this.prevClick}>
<div><FaChevronLeft /></div>
</div>
<div className="next" onClick={this.nextClick}>
<div><FaChevronRight /></div>
</div>
</div>
</div>
)
}
}
export default AbCarousel
解决方案
最简单的就是更新您的onClick
处理程序以setTimeout
作为回调,如下所示
onClick={() => setTimeout(this.nextClick, numSeconds)
或者您可以nextClick
直接更新方法并在 中使用回调函数setTimeout
并环绕您希望延迟执行的代码:
nextClick = () => {
const slide = this.myRef.current;
setTimeout(() => {
slide.scrollLeft += slide.offsetWidth;
if (slide.scrollLeft >= (slide.scrollWidth - slide.offsetWidth)) {
slide.scrollLeft = 0;
}, numSeconds)
}
推荐阅读
- ios - 我可以从 Swift 扩展中的不同模型初始化 Codable 模型吗?
- python - 私有属性和设置限制
- reactjs - 使用 Moment in React 验证日期
- pyomo - Pyomo - 日志文件的位置
- python - 如何使用随机选择颜色
- sql-server - 从 Salesforce 调用 SQL Server 存储过程需要什么?
- javascript - 有没有办法在页面上挂钩资源请求?
- azure-virtual-machine - 使用 Azure Bastion 远程访问 VNet Windows VM 的先决条件是什么?
- ruby-on-rails - 使用 webpack 开发服务器和 rails 服务器进行 Webpack 热重载
- c# - 从接口实现的不同类中调用方法