reactjs - 在 React ComponentDidUpdate 中使用 SetInterval
问题描述
在使用 setInterval 引入反应类 componentDidUpdate 时有点挣扎
我的代码看起来像这样
componentDidUpdate = prevProps => {
const data = this.props.fullData;
if (prevProps.fullData !== this.props.fullData) {
this.setState({
mediaAllData: data.ALL ? data.ALL : [],
});
const wholeAssets = data.ALL ? data.ALL : [];
const assetsWithIncomplete = wholeAssets.filter(
i => i.status === '6',
);
if(assetsWithIncomplete.length>0){
// need to call api with list of id's whose status is 6. Here for example [1,2,3]
}
此代码将在初始页面加载时工作如果 WholeAssets 长度大于 0,我需要调用 API 并检查单个数据的状态。通常在 7 秒后,它会更新状态。那么我如何使用 ComponentDidUpdate 中的 setInterval 进行检查。如果没有单个数据的状态为 6,则api 应该停止触发 api。
解决方案
我们可以做这样的事情吗>:
if(assetsWithIncomplete.length>0){
let setIntervaId = setInterval(()=>{
//setup a state in your reducer with myDataSetComplete: false, and set it up in
//your set state to props as well
if(this.props.myDataSetComplete){
clearInterval(setIntervaId)
}else{
//Set up in map dispatch to props
this.props.CallAnotherAPIToCompleteMyDataset(val);
}
}, 7000)
}
const mapStateToProps = state => {
return {
.....,
myDataSetComplete: state.myDataSetComplete
};
};
const mapDispachToProps = (dispatch, props) => {
return {
.....,
CallAnotherAPIToCompleteMyDataset: (val) => dispatch(actionCreators.CallAnotherAPIToCompleteMyDataset(val)),
};
};
减速器
const initialState = {
.....,
myDataSetComplete: false
};
推荐阅读
- python - 在 python 中使用来自不同大小网格点的数据生成 3-D 曲面图
- css - MUI 类中的样式元素
- nginx - Nginx 条件访问日志不起作用
- c# - 在 C# MVC 中为什么从 ViewModel 中的 Razor 模型抛出异常
- java - Why my jaxb2marshaller does not unmarshal what it marshalled before?
- cordova - 科尔多瓦项目中的 index.js 是否必要?
- r - write_csv 科学记数法取决于尾随“000”?
- javascript - 使用 JavaScript / jQuery 设置后台链接 URL
- php - 如何回显 SQL 表中的所有内容?
- javascript - 如何阻止hammer.js与正常滚动冲突