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

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

10.07.2022, 11:43. Показов 854. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru