2017-01-12 3 views
0

У меня есть класс React. Сначала консоль напечатает пустой массив {}, который вернет пустой div. Однако через полсекунды консоль напечатает правильные значения - но пустой div останется. Как мне изменить класс для правильной загрузки JSON?Реагирование: отсрочка рендеринга данных JSON?

var TableData = React.createClass({ 

    render: function() { 
     console.info(JSON.stringify(this.props.summary)); 

     if (!this.props.data || !this.props.summary) { 
      return <div>Loading name table..</div> 
     } 

     var summary = this.props.table; 

     var nameTable = summary.nameTable; 
     var nameTableArr = Object.values(nameTable); 
     return (// A table is returned here, works with the same data structure as is present in the JSON 

Если я иду в консоль, console.info печатает пустую строку JSON {} на начальном этапе, который правильно возвращает «Фамилии таблицу ...» Див. Тем не менее, данные печатаются в консоли через полсекунды позже, но никогда не выходят за пределы оператора if и заполняют таблицу.

Он работает, если я изменяю nameTable var, чтобы включить «ручные» данные, поэтому это должно быть что-то, что позволяет передавать данные на стороне сервера за полсекунды.

Как я могу изменить класс выше, чтобы отложить рендеринг, скажем, 1 секунду, а затем заполнить таблицу? В этом случае я буду подозревать.

Снятие оператора if приводит к Uncaught TypeError: Cannot convert undefined or null to object в консоли, что имеет смысл, поскольку строка действительно пуста в течение половины секунды.

ответ

1

Я не испытал Реакцию, но похоже, что у вас проблемы с асинхронным поведением.

Чтобы помочь вам больше, мне нужна часть кода, где вызывается ajax.

Весь вопрос, на мой взгляд, заключается в том, что ваш код запускается первым, когда результатов пока нет, а после загрузки данных он не будет запускаться снова.

Так что присмотритесь к обработке асинхронных материалов AJAX, чтобы ваша проблема была там.

Смежные вопросы