reactjs - react-native 完成后如何更新进度和执行代码
问题描述
我对 react-native 真的很陌生。我正在尝试创建一个带有进度指示器的按钮,并希望在进度完成时执行一些代码。不知何故,我使用以下代码实现了所需的行为,
反应组件
class ProgressButton extends Component {
constructor() {
super();
this.state = {
progress: 100,
};
this.progressTimer = null;
}
componentDidMount() {
this.progressTimer = setInterval(() => {
if(this.state.progress === 0) {
clearInterval(this.progressTimer);
// Run code on completion
}
this.setState({progress: this.state.progress - 1})
}, 100)
}
render() {
return (
<button style={{backgroundPosition: this.state.progress + '%'}}>
Hello
</button>
);
}
}
CSS
button {
font-size: 16px;
width: 70px;
height: 30px;
border-radius: 4px;
border: none;
background-size: 200% 100%;
background-image: linear-gradient(to right, black 50%, grey 50%);
color: white;
background-position: 100% 0;
}
但我对这个解决方案不满意,因为,
- 进度动画不流畅。
- 我不认为使用
setInterval()
是一个好主意。
我考虑过对 CSS@keyframes
动画做同样的事情并setTimeout()
在完成时执行代码。但我也不确定,因为它可能不同步。
有一个更好的方法吗?
解决方案
推荐阅读
- amazon-web-services - SSH 客户端未在 aws 中启动
- php - PHP mysqli,最大参数长度
- python - IPython重新加载不同的模块?
- ruby - 从长文本中提取子字符串/值
- excel - 使用 VBA 和 Excel 在 Outlook 中打开 FileDialog SaveAs 时出错
- google-chrome-extension - chrome.tabCapture 到 VLC
- excel - 带有循环的 if 语句 - 大型数据集
- python - 为什么我的熊猫数据框选择的形状是错误的
- javascript - 在 Javascript 中将对象 Promise 转换为字符串
- swift - 在不同形状的金属纹理之间复制数据