在 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 > 0rows && rows.length 一样写您的条件。 rows.length 如果为空将解析为 0false,但如果大于 0 将解析为 true(类型转换或类型转换)。

return (
      <div>
        {(rows && rows.length > 0 ? (
          //components HTML code here
       ) : (
          <img src="loading.gif" alt="Loading ..."/>
        )}
      </div>
)