为什么只有在react-native中首次渲染后才在组件上加载数据

时间:2017-05-11 08:44:05

标签: react-native

我不知道如何解释这个问题,但也许有人知道。现在我学习React-native并发现一些问题。

如果我第一次打开某个组件,我看不到任何数据,但如果我这样做第二次加载数据。

class Followers extends Component {
  componentWillMount() {
    const {uid} = this.props.user;
    this.props.followersFetch({uid});
    this.createDataSource(this.props)
  }

  componentWillReceiveProps(nextProps) {
    this.createDataSource(nextProps)
  }
  createDataSource({followersList}) {
    const ds = new ListView.DataSource({
      rowHasChanged: (r1, r2) => r1 !== r2
    })
    this.dataSource = ds.cloneWithRows(followersList)
  }

  renderRow(follower) {
    return (<User follower={follower}/>);

  }

  render() {
    return (
      <Container>
        <Content>
          <ListView enableEmptySections dataSource={this.dataSource} renderRow={this.renderRow}/>
        </Content>
      </Container>

    );
  }
}

const mapStateToProps = state => {
  console.log(state)
  const {followersList} = state.relation;
  const {uid} = state.profile;
  return {uid, followersList}

}

export default connect(mapStateToProps, {followersFetch})(Followers);


I'm trying use ComponentDidMount for sure data is loading but it give me error

1 个答案:

答案 0 :(得分:0)

我猜想followersFetch函数是非同步的,并且需要比你想要的更长的时间,因此数据在此组件安装渲染后到达。我建议早些时候提取数据。