在 React.js 中获取 API 获取的数据后加载一个组件
Load a component after getting API fetched data in React.js
我的组件代码如下
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 获取数据之前加载。
rows
是一个数组,因此 !rows
仍然为真。试试这个:
return (
<div>
{rows && rows.length ? (
//components HTML code here
) : (
<img src="loading.gif" alt="Loading ..."/>
)}
</div>
)
试试这个 componentWillUnmount() {
this.props.countries = []
}
,这可能对你有帮助。
您可以检查 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
即 false
,但如果大于 0 将解析为 true
(类型转换或类型转换)。
return (
<div>
{(rows && rows.length > 0 ? (
//components HTML code here
) : (
<img src="loading.gif" alt="Loading ..."/>
)}
</div>
)
我的组件代码如下
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 获取数据之前加载。
rows
是一个数组,因此 !rows
仍然为真。试试这个:
return (
<div>
{rows && rows.length ? (
//components HTML code here
) : (
<img src="loading.gif" alt="Loading ..."/>
)}
</div>
)
试试这个 componentWillUnmount() {
this.props.countries = []
}
,这可能对你有帮助。
您可以检查 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
即 false
,但如果大于 0 将解析为 true
(类型转换或类型转换)。
return (
<div>
{(rows && rows.length > 0 ? (
//components HTML code here
) : (
<img src="loading.gif" alt="Loading ..."/>
)}
</div>
)