inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Lập trình React thực tế

react typescript 환경에서 커스텀 훅을 만들어서 사용하려고 하는데 This expression is not callable 에러가 나타납니다.

1251

lzao6618

2 câu hỏi đã được viết

0

안녕하세요.
 
강의 보고 useState, useEffect 를 활용해보고 싶어서 공공데이터 포털에서 제공해주는 openapi 로 커스텀 훅을 만들어 봤습니다.
 
typescript + webstorm 환경에서 작업중인데요
 
TS2349: This expression is not callable.   No constituent of type 'void | coronaApiPros[]' is callable.
import useDailyCorona: void | coronaApiPros[]
 
App.tsx 6번 라인의 useDailyCorona(); 코드에서 이런 에러가 나타납니다.
 
구글링을 계속 해보는데 원하는 답을 찾을수가 없어서 질문드립니다..ㅠㅠ
 
App.tsx 파일과 커스텀훅 파일인 useDailCorona.tsx 파일을 첨부합니다.
----------- App.tsx ---------
import './App.css';
import React from 'react';
import useDailyCorona from './hooks/useDailyCorona';

function App() {
  const items = useDailyCorona();

  return (
    <ul>
      {items?.map((item, index) => (
        <li key={index}>createDate: {item.createDt}</li>
      ))}
    </ul>
  );
}

export default App;

----------- useDailyCorona.tsx -------------

import {useEffect, useState} from "react";
import {getCorona} from "../corona";

interface coronaApiPros {
  createDt: string // 조회 시작 시간
  deathCnt: number // 사망자 수
  defCnt: number // 확진자 수
  gubun: string // 시도명(한글)
  gubunCn: string // 시도명(중국어)
  gubunEn: string // 시도명(영어)
  incDec: number // 전일대비 증감 수
  isolClearCnt: number // 격리 해제 수
  isolIngCnt: number // 격리중 환자 수
  localOccCnt: number // 지역 발생 수
  overFlowCnt: number // 해외 유입 수
  qurRate: string // 10만명당 발생률
  seq: number // 게시글번호 (국내 시도별 발생 현황 고유값)
  stdDay: string // 기준 일 시
  updateDt: string // 수정 일시 분초
}

function useDailyCorona():void|coronaApiPros[] {
  const [items, setItems] = useState();
  const coronaItems = getCorona();

  useEffect(() => {
    coronaItems.then(response => {
      setItems(response);
    });
  }, []);

  return items;
}

export default useDailyCorona();

typescript react redux 커스텀훅

Câu trả lời 2

1

landvibe

안녕하세요
따로 쓰는 것과는 상관 없어보이구요, 마지막에 호출을 하셔서 그렇습니다
아래처럼 하시면 될거에요
export default useDailyCorona;

0

lzao6618

답변 감사합니다!!

0

lzao6618

자답입니다.

function useDailyCorona 를 export default function useDailyCorona 로 수정하니 에러가 해결됐습니다.
왜 따로 쓰면 에러가 나타날까요?

useDailyCorona.tsx 파일을 수정했습니다.

import {useEffect, useState} from "react";
import {getCorona} from "../corona";

interface coronaApiPros {
  createDt: string // 조회 시작 시간
  deathCnt: number // 사망자 수
  defCnt: number // 확진자 수
  gubun: string // 시도명(한글)
  gubunCn: string // 시도명(중국어)
  gubunEn: string // 시도명(영어)
  incDec: number // 전일대비 증감 수
  isolClearCnt: number // 격리 해제 수
  isolIngCnt: number // 격리중 환자 수
  localOccCnt: number // 지역 발생 수
  overFlowCnt: number // 해외 유입 수
  qurRate: string // 10만명당 발생률
  seq: number // 게시글번호 (국내 시도별 발생 현황 고유값)
  stdDay: string // 기준 일 시
  updateDt: string // 수정 일시 분초
}

export default function useDailyCorona(): coronaApiPros[]|void {
  const [items, setItems] = useState<coronaApiPros[]>();
  const coronaItems = getCorona();

  useEffect(() => {
    coronaItems.then(response => {
      setItems(response);
    });
  }, []);

  return items;
}

자동완성기능이 안되네요 ..

0

504

3

화면에 에러가나네요 ...

0

518

2

setValue 함수 질문 있습니다.

0

842

1

찾아야한다 실습 문의

0

471

1

훅 기초 익히기 - 배치 처리와 순차적 처리의 차이

0

476

1

cra, next.js 관련 질문 드립니다!

0

606

1

useState 배열 비구조화 문법 질문!

0

256

1

Uncaught TypeError: Failed to execute 'removeChild' on 'Node': parameter 1 is not of type 'Node'

1

1087

2

Saga 오류 이거 혹시 왜이런지 알수 있을까요?

0

374

2

http://localhost:3001/user/search?keyword=u 이걸로 데이터를 보는데 저는 사이트에 연결할 수 없다고 나오네요

0

665

1

match

1

498

1

버튼이 생성되지 않습니다 .

0

288

1

혹시 import 옆에 파일 사이즈 표시 어떻게 하나요?

0

263

1

saga 문제

0

249

1

에러가 발생하는데 이유가뭘까요..?

0

392

2

선생님과 똑같이 했는데 다 rendering 됩니다.

0

206

1

컴포넌트와 컨테이너의 기준

0

316

1

커스텀훅의 개념과 함수차이

1

1199

1

useEffect 실전 활용법(1) 강의에서 질문있습니다.

0

340

1

리덕스, 사가파일들의 관리

0

209

1

useImperativeHandle 질문 입니다.

0

283

1

컴파일 문의드립니다.

0

207

1

React.memo 관련 질문이 있습니다.

0

378

1

Context API vs Redux 사용 빈도

0

217

1