Reactjs 从SectionList的节数据的多个url获取和存储数据

Reactjs 从SectionList的节数据的多个url获取和存储数据,reactjs,react-native,fetch,Reactjs,React Native,Fetch,我想在react native中使用部分列表 export default class Home extends React.Component { constructor(props) { super(props); this.state = { dataSource: [ { title: 'New List', data: []

我想在react native中使用
部分列表

export default class Home extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            dataSource: [
                {
                    title: 'New List', data: []
                },
                {
                    title: 'Old list', data: []
                },
            ]
        }
    }

    render() {
        return (
            <SectionList
                style={styles.SectionContainer}
                sections={this.state.dataSource}
                renderSectionHeader={this._renderSectionHeader}
                renderItem={this._renderItem}
                keyExtractor={(item) => item.id}
            />
        )
    }
}

如何获取和存储
部分列表的
数据源
的响应数据?

听起来您需要发出多个承诺,等待所有承诺完成。有一个很棒的
.all
帮助工具,允许您传递一系列承诺,然后在运行解析之前等待所有承诺完成:

function getUserAccount() {
  return axios.get('/user/12345');
}

function getUserPermissions() {
  return axios.get('/user/12345/permissions');
}

axios.all([getUserAccount(), getUserPermissions()])
  .then(axios.spread(function (acct, perms) {
    // Both requests are now complete
  })); 
您还可以使用本机承诺来实现这一点:

getLists(){
    this.getListData().then( responses => {
         this.setState({
            dataSource: [
                {
                    title: 'New List', data: responses[0]
                },
                {
                    title: 'Old list', data: responses[1]
                },
             ]
         )};
    });
}
getListData(){
    return new Promise( (resolve, reject) => {
       let completes = 0;
       let responses = [];
       let url = website + '/api/new-list/';
       fetch(url)
          .then((res) => {
              responses.push(res.json());
              completes++;
              if(completes === 2){
                  resolve(responses);
              }
          })
          .catch((err) => console.log(err));

       url = website + '/api/old-list/';
       fetch(url)
          .then((res) => {
              responses.push(res.json());
              completes++;
              if(completes === 2){
                  resolve(responses);
              }
          })
          .catch((err) => console.log(err))
    });
}

是的,使用axios使它变得更好。非常感谢。
getLists(){
    this.getListData().then( responses => {
         this.setState({
            dataSource: [
                {
                    title: 'New List', data: responses[0]
                },
                {
                    title: 'Old list', data: responses[1]
                },
             ]
         )};
    });
}
getListData(){
    return new Promise( (resolve, reject) => {
       let completes = 0;
       let responses = [];
       let url = website + '/api/new-list/';
       fetch(url)
          .then((res) => {
              responses.push(res.json());
              completes++;
              if(completes === 2){
                  resolve(responses);
              }
          })
          .catch((err) => console.log(err));

       url = website + '/api/old-list/';
       fetch(url)
          .then((res) => {
              responses.push(res.json());
              completes++;
              if(completes === 2){
                  resolve(responses);
              }
          })
          .catch((err) => console.log(err))
    });
}