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 ответов

10 просмотров

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 так себе

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
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
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта