169 похожих чатов

Добрый вечер всем! Тут столкнулся с проблемой при попытке создать

админку из excel-таблицы, хочу её распарсить с помощью npm xlsx от sheetJs.
В итоге получился нужный мне объект, но он виден только внутри async функции. Подскажите как можно его оттуда вытащить чтобы он стал доступен вне этой функции?
Заранее большое спасибо!

Вот мой код:

import { useEffect, useState } from 'react';
import { read, utils } from 'xlsx';

const url = 'adminTable.xlsx';

export default function DataLink() {
useEffect(() => {
(async () => {
const wb = read(await (await fetch(url)).arrayBuffer(), { WTF: 1 });
const data = utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]], { header: 1 });

const dataGpsTable = data.map((el) => (
{
Name: el[0],
Text: el[1],
Price: el[2],
Image: el[3],
}
));
})();
}, []);

13 ответов

13 просмотров

useState?

Вроде как внутри у тебя самовызывающаяся функция async, как-то надо понятнее переписать

Andrew-Che Автор вопроса
Лисов Григорий
useState?

Получилось, спасибо! Правда теперь он у меня два раза вызывается, сначала пустой, потом уже с данными)

Andrew Che
Получилось, спасибо! Правда теперь он у меня два р...

Ну у него на первом рендере дефолтное значение выставляется, а на том, где у тебя данные приходят - с данными)

Andrew-Che Автор вопроса
Лисов Григорий
Ну у него на первом рендере дефолтное значение выс...

Сейчас попытался законсолить переменную только если есть данные но консолится почему то всегда, и не могу найти ошибку в цикле. Есть ли возможность еще раз подсказать? Не понимаю где косяк export default function DataLink() { const [dataGpsTable, setDataGpsTable] = useState([]); if (dataGpsTable !== []) { console.log(dataGpsTable, 'данные пришли!'); } useEffect(() => { (async () => { const wb = read(await (await fetch(url)).arrayBuffer(), { WTF: 1 }); const data = utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]], { header: 1 }); setDataGpsTable(data.map((el) => ( { Name: el[0], Text: el[1], Price: el[2], Image: el[3], } ))); })(); }, []);

Andrew Che
Сейчас попытался законсолить переменную только есл...

Данные консолятся всегда вот почему) А про ошибку в цикле я не понял, о чем ты Что за ошибка?

Andrew-Che Автор вопроса
Лисов Григорий
Данные консолятся всегда вот почему) А про ошибку ...

Перепутал с условием, извиняюс) А почему пустой массив не равный пустому массиву это истина? Наоборот же должно быть вроде

Andrew-Che Автор вопроса
Evgeni Che
У тебя setDataGps в теле компонента?

по сути да, лучше его отдельно вывести?

Andrew Che
Перепутал с условием, извиняюс) А почему пустой ма...

Это ссылочный тип данных, из-за того что ссылки разные он проверяет они никогда не равны и по этому тру будет

Evgeni Che
У тебя setDataGps в теле компонента?

В рендере компонента вызывать setState так себе

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта