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

6 просмотров

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

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

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

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
70
Всем доброго дня, ребят подскажите пожалуйста, если в курсе по ассемблеру используется MASM32, могу ли я использовать FASM? В чем явная разница и будет ли у меня все работать?
Botsman
17
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
25
Книга Юрова В.И пойдёт для обучения?
Botsman
24
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Люди добрые, помогите с идеями, потому что свои закончились. У клиента падает софтина в момент инициализации модуля OtlEventMonitor на RegisterWindowMessage('Gp/OtlTaskEvents/...
Михаил Усков
7
> Примечательно, что новый владелец удаляет из GitHub любые жалобы, указывающие на подозрительную активность или смену владельца, и, видимо, рассчитывает на то, что пользовате...
Alex Sherbakov
2
GridView fully ignored first parent(SizedBox), and take width from second parent(Container). How can I constrain GridView by first parent? Widget build(BuildContext context) {...
Hamster
1
Коллеги, добрый день. Есть такой вопрос: Есть модуль, который надо запустить через супервизор как дочерний процесс. Пока инстансов было нужно 8, всё было окей, но когда их ст...
Δημήτηρ
4
Hey there Which is the best Linux destro for developers (coding)? To my research on reddit, they said Linux mint is good for mid level spec and Ubuntu for high Lev hardwar...
Wiz 🪄
11
Карта сайта