Показать сообщение отдельно
  #12 (permalink)  
Старый 27.05.2023, 19:15
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

А ты ищи статьи по реакту в целом, а не по твоей херне.
В рекате функция useTexture вызывается стопицот раз. В первый она нихрена не возвращает, только запускает внутри где-то загрузку и ставит флаг что загрузка пошла. Пока загрузка идёт - она всё ещё нихрена не возвращает. Когда загрузка закончилась, она снова внутри ставит флаг что загрузка завершена и следующий вызов уже возвращает загруженное.

Вот тебе утрированный код как это работает:
<script>
const условныеПотрохаРеактКомпонета = {};

function условныйРеакт(компонент) {
  // вместо статического интервала тут реакции на события, но не суть
  setInterval(() => { 
    document.body.innerHTML = компонент();
  }, 1000);
}

function загрузитьАсинхронно(url, колбэк){
  setTimeout(() => колбэк('текстура, ёба'), 5000);
}



function useTexture(url) {
  if(условныеПотрохаРеактКомпонета.загружено)
    return условныеПотрохаРеактКомпонета.текстура;
  if(условныеПотрохаРеактКомпонета.грузится)
    return 'нихуя, жди';

  условныеПотрохаРеактКомпонета.грузится = true;
  
  загрузитьАсинхронно(url, (result) => {
    условныеПотрохаРеактКомпонета.грузится = false;
    условныеПотрохаРеактКомпонета.загружено = true;
    условныеПотрохаРеактКомпонета.текстура = result;
  });
  
  return 'нихуя, жди'
}

let i = 0;

function нарисоватьХуйнюНаЭкранеКомпонент() {
  const texture = useTexture('http://хуй.пизда');
  return '<b>' + texture + '</b> (нарисовано раз ' + ++i + ')';
}


условныйРеакт(нарисоватьХуйнюНаЭкранеКомпонент);
</script>

Если даже это не поможет, то медицина тут бессильна.
__________________
29375, 35

Последний раз редактировалось Aetae, 27.05.2023 в 19:22.
Ответить с цитированием