[React] useCallback으로 만든 함수에 generic을 사용하고 싶습니다.
6734 단어 React자바스크립트TypeScript후크
문제
import React from "react"
interface Props {}
interface CallbackProps {
a: number
b: string
}
interface CallbackReturn {
c: boolean
}
const Test: React.FC<Props> = (props) => {
const callback = React.useCallback<(props: CallbackProps) => CallbackReturn>(
(props) => {
const {a, b} = props
return {
c: true,
}
},
[]
)
const x = callback({ a: 1, b: "弐" })
console.log('x.c:', x.c)
return <></>
}
export default Test
useCallback 자체에는 generic로 타입을 할 수 있지만, 여기서 말한다 callback
변수가 된 함수에는 generic은 건네줄 수 없다.
callback<Generic>(...) // こうしたい場合
해결
함수를 반환하는 useMemo로 전환합니다. 이렇게 하면 dependency도 사용할 수 쓸데없이 함수를 생성하는 것은 없고, generic을 건네줄 수 있는 함수도 된다.
import React from "react"
interface Props {}
interface CallbackProps<T> {
a: T
b: string
}
interface CallbackReturn {
c: boolean
}
const Test: React.FC<Props> = (props) => {
const callback = React.useMemo(() => function<T>(
props: CallbackProps<T>
): CallbackReturn {
const { a, b } = props
return {
c: true,
}
},
[])
const x = callback<boolean>({ a: false, b: "弐" })
console.log('x.c:', x.c)
return <></>
}
export default Test
Reference
이 문제에 관하여([React] useCallback으로 만든 함수에 generic을 사용하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/github0013@github/items/0d17eb1cef0c316bc322
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import React from "react"
interface Props {}
interface CallbackProps {
a: number
b: string
}
interface CallbackReturn {
c: boolean
}
const Test: React.FC<Props> = (props) => {
const callback = React.useCallback<(props: CallbackProps) => CallbackReturn>(
(props) => {
const {a, b} = props
return {
c: true,
}
},
[]
)
const x = callback({ a: 1, b: "弐" })
console.log('x.c:', x.c)
return <></>
}
export default Test
callback<Generic>(...) // こうしたい場合
함수를 반환하는 useMemo로 전환합니다. 이렇게 하면 dependency도 사용할 수 쓸데없이 함수를 생성하는 것은 없고, generic을 건네줄 수 있는 함수도 된다.
import React from "react"
interface Props {}
interface CallbackProps<T> {
a: T
b: string
}
interface CallbackReturn {
c: boolean
}
const Test: React.FC<Props> = (props) => {
const callback = React.useMemo(() => function<T>(
props: CallbackProps<T>
): CallbackReturn {
const { a, b } = props
return {
c: true,
}
},
[])
const x = callback<boolean>({ a: false, b: "弐" })
console.log('x.c:', x.c)
return <></>
}
export default Test
Reference
이 문제에 관하여([React] useCallback으로 만든 함수에 generic을 사용하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/github0013@github/items/0d17eb1cef0c316bc322텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)