Не удается установить данные для расширяемого списка в реагировать родной - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть расширяемый список разделов в моем приложении, и мне нужно заполнить его значениями из двух разных вызовов API.В этой ссылке образец заполняется из локальной переменной.Также я заметил, что данные должны быть такими:

const MockData = [
        ...
        {
            header: 'sectionHeader',
            member: [
            ...
                {
                    title: 'memberTitle',
                    content: 'content',
                },
            ...
            ]
        },
        ...
    ]

Я проанализировал свои ответы из двух apis в вышеупомянутом формате.и сохранил значение в переменной состояния.если я устанавливаю это значение переменной sate в расширяемый список, это показывает ошибку.Если предположить, что я печатаю значение переменной состояния с помощью console.log (), копирую это значение и сохраняю его в локальной переменной, а затем использую эту переменную для заполнения расширяемого списка, в котором она работает.Я знаю, это звучит так странно.Я скопировал значение из консоли, чтобы проверить, не было ли каких-либо ошибок при разборе json.Ну, я не думаю, что то, что я проанализировал, неверно.Может ли кто-нибудь помочь.

Это мой рендер

render() {
  if (this.state.hasData) {


var data = this.state.processedData;
console.log("return");
console.log(data);

return (

     <ExpandableList
      dataSource={this.state.processedData}
      headerKey="title"
      memberKey="member"
      renderSectionHeaderX={this._renderHeader}
      renderRow={this._renderRow}

    /> 

);
  } else {
    return <ActivityIndicator style={{ flex: 1 }} />
   }

}

Любая помощь будет оценена

Заранее спасибо.

РЕДАКТИРОВАТЬ 1.

В большинстве примеров расширяемого списка список заполняется из локального хранилища.Заполняю список из переменной состояния.Это проблема

РЕДАКТИРОВАТЬ 2.

Вот как я анализирую два моих API в требуемый формат

    processList =() =>{
console.log("ProcessList");
var students = this.state.data;
var stuLength = students.length;
var tempStuLength = 0;

var main = "[";
this.state.data.map((userData) => {
  tempStuLength = tempStuLength + 1;

  var title = '{ title: {' + 'StudentName: ' + JSON.stringify(userData.StudentName ) +', ' + 'studentId:' + JSON.stringify( userData.StudentID )+  ', '+ 'name:' +  JSON.stringify(userData.StudentName) +  ', ' + 'parentName:' +   JSON.stringify(userData.FatherName) +   ', ' + 'dob:' +  JSON.stringify(userData.DOB) +   ', ' + 'image:' +  JSON.stringify(userData.CivilID) +  '},';
  var member = 'member: ['
  var tempFee = this.state.feesDetails
  var feeLength = tempFee.length;
  var tempCount = 0;

  this.state.feesDetails .map((fees) =>{


    if( userData.StudentName === fees.StudentName){
      tempCount = tempCount + 1;
      if (tempCount !== 1){
        member = member.concat(",")
      }
    var feeItem = '{  title:' +  JSON.stringify(fees.StudentName )+  ', date:' +  JSON.stringify(fees.FeeDueDate) +  ', type:' +   JSON.stringify(fees.FeeDescription) +  ', amount:' +   JSON.stringify(fees.FeeAmount) +   '}'

     member = member.concat( feeItem);
    }

  });
  tempCount == 0;
   member = member.concat("] }");
   if(tempStuLength !== stuLength){
    member = member.concat(",")

   }

  title = title.concat(member);

  main = main.concat(title);


  });
  main = main.concat("]");
  console.log(" $$$$$$$$$ ");
  console.log(main);
  console.log(" $$$$$$$$$ ");
  this.setState({
    processedData : JSON.stringify(main),
    hasData : true
  });


  };

В настоящее время у меня есть эта ошибкапри попытке установить анализируемые данные из переменной состояния.Любая идея ... ??

TypeError: TypeError: TypeError: Запрошенные ключи значения, которое не является объектом.

1 Ответ

0 голосов
/ 28 сентября 2018

MockData.testData должен быть пользовательским массивом, который вы создали из 2 вызовов API.Как только он сформирован, вызовите setState.Тогда это должно работать.

render() {
  return (
    MockData.testData.length > 0 ?
    <ExpandableList
      dataSource={MockData.testData}
      headerKey="title"
      memberKey="member"
      renderSectionHeaderX={this._renderHeader}
      renderRow={this._renderRow}

    />
    :
    <ActivityIndicator style={{ flex: 1 }} />
  );
}
...