在React.js中获取API提取的数据后加载组件

时间:2019-11-30 08:01:27

标签: reactjs api mount

我的组件代码如下

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之前的数据。

3 个答案:

答案 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.lengthrows.length如果为空,则会解析为0的{​​{1}},但如果大于0则将解析为false(类型转换或类型转换)。

true