Реагировать. Как установить заполнитель до полной загрузки списка компонентов?

Итак, у меня есть Component, который отображает список вложенных компонентов Cri, и моя цель - сделать отображение некоторого заполнителя на экране до тех пор, пока список компонентов Cri не будет полностью загружен на экран.

Есть предложения?

class Comp extends Component {
  constructor(props) {
    super(props)
    this.state = {
      isLoaded: true
    }
  }
  _func = () => {
    const lis = [];
    const { att, cri, media, res, st } = this.props;
    cri &&
      cri.map((row, i) => {
        var state = !row.available ? 'locked' : ''
        if (att.inProgress === false && att.itemId === row.cr && st) {
          var show = true
          state = result || state
        }
        lis.push(
          <Cri // my list of the Components Cri
            {...row}
            action = {this._atte(row.cri, row.available)}
            key = {i}
            mediaType = {medpe}
            showOutcome = {showe}
            state = {state}
          />
        )
      })
    return lis
  }
  render() {
    const { isLoaded } = this.state;
    return (
      <div className = "main-container">
        <div className = "sub-list">
          <div>
            {this._buildCrimesList()}
          </div>
        </div>
      </div>
    )
  }
}

Используйте синтаксис {isLoaded ? <YourComponent /> : null}.

Striped 25.04.2018 17:38
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
35
1

Ответы 1

Вы могли сделать:

render() {
  const { isLoaded } = this.state;

  if (!isLoaded) {
    return <div>Loading..</div>;

  return (
    <div className = "main-container">
      <div className = "sub-list">
        <div>
          {this._buildCrimesList()}
        </div>
      </div>
    </div>
  )
}

И что это мне дает? {this._buildCrimesList()} все равно не загрузит ресурсы ....

Max Wolfen 25.04.2018 20:16

Какие? Я не понимаю, что вы говорите.

Colin Ricardo 25.04.2018 20:32

Мы не можем использовать метод setState внутри render() - потому что React выйдет из строя и предоставит нам цикл состояния загрузки (. Он также сказал в отключенной документации React ...

Max Wolfen 25.04.2018 22:48

Да .. Я нигде не использую setState?

Colin Ricardo 25.04.2018 23:17

Итак, а как мы можем изменить состояние const { isLoaded } = this.state; в случае, если наша функция начинает работать только из метода render()? Это у меня вопрос, а как связать момент окончания работы функции и изменение статуса isLoaded внутри this.state?

Max Wolfen 26.04.2018 08:39
const { isLoaded } = this.state; не меняет состояние. Я думаю, вам следует сначала ознакомиться с некоторыми основами React, это может помочь вам понять этот код. Я думаю, что вы просите поместить _buildCrimesList() в componentDidMount(), но вы не опубликовали весь свой код, поэтому я не знаю.
Colin Ricardo 26.04.2018 11:19

Другие вопросы по теме