С Новым годом! Форум программистов, компьютерный форум, киберфорум
React/ReactJS
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 10.07.2022
Сообщений: 5

В функцию не передается параметр

10.07.2022, 11:43. Показов 851. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день, столкнулся со следующей проблемой:
У меня есть собственный хук useFetching, в него передается какой-то код (в данном случае идет получение данных с сервака). Сам хук выполняет этот код, внутри своего кода и возвращает эту новую функцию (с "вставленным" внутрь кодом, который я передаю в него, состояние загрузки и ошибки(код см. ниже). Проблема в том, что когда я передаю в хук какой-то параметр - он не передается, код в хуке получает только underfined.

PostIdPage.jsx
JavaScript
1
2
3
4
5
6
7
8
9
10
11
const [fetchPostById, isLoading, error] = useFetching(async (id) => {
        console.log(id); // underfined
        const response = await PostService.getById(id); // здесь все в порядке, если передавать явно params.id, то все отрабатывает корректно
        setPost(response.data);
    })
 
useEffect(() => {
        console.log(params.id);  // в консоли с переменной все в порядке, она существует
        const id = params.id;
        fetchPostById(id); // но когда я ее передают в fetchPostById, передается underfined
    }, [])
useFetching.js
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import {useState} from "react";
// хук, в который передается колбэк, а хук возвращает
// функцию с этим колбэком, состояние загрузки и ошибку
export const useFetching = (callback) => {
    const [isLoading, setIsLoading] = useState(true);
    const [error, setError] = useState('');
 
    const fetching = async () => {
        try {
            setError('');
            setIsLoading(true);
            await callback();
        } catch (e) {
            setError(e.message);
        } finally {
            setIsLoading(false);
        }
    }
 
    return [fetching, isLoading, error];
}
Добавлено через 26 минут
p.s. это мое первое обращение, если необходимы какие-то доп данные или инфа - пишите
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.07.2022, 11:43
Ответы с готовыми решениями:

Создать функцию, которая вычисляет факториал. Предел задается с клавиатуры и передается в функцию в качестве параметр
Здравствуйте, помогите написать программу пожалуйста по этому заданию. "Создать функцию, которая вычисляет факториал. Предел задается с...

Не передается параметр в функцию
Есть проект с формами. после формы описан класс Class boolExpr с определяемым методом Public Shared Function CreateTree(ByVal strArg...

Не передается параметр в функцию
Доброго дня уважаемые коллеги. Столкнулся с проблемой и никак не могу решить. Помогите пожалуйста. Есть кусочек кода: Задумка такая...

1
 Аватар для Ovederax
604 / 404 / 212
Регистрация: 30.04.2017
Сообщений: 744
Записей в блоге: 1
10.07.2022, 12:24
Лучший ответ Сообщение было отмечено Alastorial как решение

Решение

Не было передачи параметра в строках 8 и 12 в функции fetching
написал пример на ts, типы можно удалить
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import * as React from 'react';
import { useState, useEffect, useCallback } from 'react';
 
type Func = (...params: any[]) => void;
 
export const useFetching = (callback: Func): [Func, boolean, string] => {
  const [isLoading, setIsLoading] = useState(false);
  const [error, setError] = useState(null);
 
  const fetching = useCallback(async (...props: unknown[]) => {
    try {
      setError('');
      setIsLoading(true);
      await callback(...props);
    } catch (e) {
      setError(e.message);
    } finally {
      setIsLoading(false);
    }
  }, [callback]);
 
  return [fetching, isLoading, error];
};
 
const PostService = {
  getById: async (id: string): Promise<any> => {
    console.log('getById', id);
    return await new Promise((resolve) => {
      setTimeout(() => {
        resolve({ data: ['Data 1', 'Data 2'] });
      }, 2000);
    });
  },
};
 
const params = {
  id: '1',
};
 
function App() {
  const [data, setData] = useState(null);
  const dataFetch = useCallback(async (id: string) => {
    console.log('id=', id);
    const response = await PostService.getById(id);
    setData(response.data);
  }, []);
  const [fetchPostById, isLoading, error] = useFetching(dataFetch);
 
  useEffect(() => {
    fetchPostById(params.id);
  }, []);
 
  return (
    <div>
      {isLoading && 'Loading'}
      {!isLoading && !error && data && data.map((it) => <div>{it}</div>)}
    </div>
  );
}
 
export default React.memo(App);
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.07.2022, 12:24
Помогаю со студенческими работами здесь

в функцию передается параметр const int *
В функцию передается параметр const int *. Для чего этот const: для указателя или для значения по указателю? И как сделать, чтобы в функции...

Из функции main в функцию kvadrat передается параметр side – длина стороны квадрата
Написать программу, в которой из функции main в функцию kvadrat передается параметр side – длина стороны квадрата. При этом функция...

Создать функцию, которой строка передаётся как параметр, и которая возвращает количество слов
создать функцию в которой строка передаётся как аргумент и возвращает количество слов

Напишите функцию, которая возвращает объем сферы, радиус которой передается как параметр
1)Напишите функцию, которая возвращает объем сферы, радиус которой передается как параметр. 2)Дан двумерный массив. Заполнить...

Создать функцию, которой строка передаётся как параметр, и которая возвращает количество слов
создать функцию в которой строка передаётся как параметр и возвращает колличество слов в этой строке


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru