我的组件代码如下
componentDidMount = () => {
this.props.dispatch(getCountry());
}
render() {
let rows = this.props.countries.map((item, index) => (//some code here));
return (
<div>
{rows ? (
//components HTML code here
) : (
<img src="loading.gif" alt="Loading ..."/>
)}
</div>
)
}
但是组件正在加载API之前的数据。
答案 0 :(得分:2)
rows
是一个数组,因此!rows
仍为true。试试这个:
return (
<div>
{rows && rows.length ? (
//components HTML code here
) : (
<img src="loading.gif" alt="Loading ..."/>
)}
</div>
)
答案 1 :(得分:1)
尝试此componentWillUnmount() {
this.props.countries = []
}
,这可能会对您有所帮助。
答案 2 :(得分:1)
您可以检查rows
数据,因为如果不提取,它将是一个空数组。
return (
<div>
{rows && rows.length ? (
//components HTML code here
) : (
<img src="loading.gif" alt="Loading ..."/>
)}
</div>
)
您也可以像rows && rows.length > 0
那样写条件rows && rows.length
。 rows.length
如果为空,则会解析为0
的{{1}},但如果大于0则将解析为false
(类型转换或类型转换)。
true