在评估if else语句时,我无法插入定时加载程序。
我的目标是在评估语句payload.length > 0 ? (/*Do stuff*/) : (/*Do something else*/)
的同时,将加载器渲染几秒钟。感谢您提供任何反馈意见。
这是我要添加几秒钟的装载程序
<LoaderContainer>
<RingLoader size={100} />
</LoaderContainer>
这是我的代码
return payload.length > 0 ? (
<Container>
<FilterBarContainer>
<FilterBar onChangeValue={onChangeValue}/>
</FilterBarContainer>
<FilterContainer>
{tabData.map(/* Displays tabs */)}
</FilterContainer>
{finalData.length === 0 ? (
<EmptyTabContainer>
<p>/* Empty Tab */</p>
</EmptyTabContainer>
) : (
finalData.map(
payload => (/* Displays payload info */),
)
)}
</Container>
) :(
<EmptyPageContainer>
<FontAwesomeIcon icon="ticket-alt" className="icon" />
<p>/* This user has no tickets */</p>
</EmptyPageContainer>
);
答案 0 :(得分:2)
在渲染方法中,添加以下代码:
public class BaseViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged([CallerMemberName] String propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
然后,当您定义状态时,需要指定render(){
if(this.state.loading){
return (
<LoaderContainer>
<RingLoader size={100} />
</LoaderContainer>
);
}
return(
// The rest of your code.
);
:
state.loading: true
只要您准备卸下装载程序,只需使用:
state = {
loading: true
}
请记住,React中的每个状态更改都会导致this.setState({
loading: false
});
方法再次执行。这将导致当您将render
的状态更新为loading
时,除非您将false
的状态重新设置为loading
,否则将不再呈现正在加载的组件。>
注意: 剩下的唯一事情就是实现将true
的状态设置为{时要呈现的内容{1}}。
要仅在特定(但特定)时间内渲染加载器,可以在loading
方法中使用false
:
setTimeout
我真的不建议这样做,但是如果您不使用异步函数来获取数据或其他任何东西,那么使用componentDidMount
来模拟页面加载似乎很好。