使用 useState 作为值时如何为反应上下文键入初始状态
How to type the initial state for react context when using useState as value
我最近看了 Jack Herrington 的 YouTube 视频,“掌握 React 上下文”,他在其中使用 useState
作为上下文提供程序的值。这让我觉得很有趣,但是当我尝试用打字稿做同样的事情时,我完全被如何输入初始状态难住了。
示例 JS 代码:
const CounterContext = createContext(null);
const CounterContextProvider = ({children}) => {
return (
<CounterContext.Provider value={useState(0)}>
{children}
</CounterContext.Provider>
}
使用null
作为默认值是不可能的。我可以为 useState
定义正确的类型,但初始状态值会是什么样子?
useState(0)
返回的值是[number, Dispatch<SetStateAction<number>>]
类型的元组,其中Dispatch
和SetStateAction
是从react导入的。所以使用模拟默认值,它看起来像:
import { createContext, Dispatch, SetStateAction } from "react";
const CounterContext = createContext<
[number, Dispatch<SetStateAction<number>>]
>([0, () => {}]);
我最近看了 Jack Herrington 的 YouTube 视频,“掌握 React 上下文”,他在其中使用 useState
作为上下文提供程序的值。这让我觉得很有趣,但是当我尝试用打字稿做同样的事情时,我完全被如何输入初始状态难住了。
示例 JS 代码:
const CounterContext = createContext(null);
const CounterContextProvider = ({children}) => {
return (
<CounterContext.Provider value={useState(0)}>
{children}
</CounterContext.Provider>
}
使用null
作为默认值是不可能的。我可以为 useState
定义正确的类型,但初始状态值会是什么样子?
useState(0)
返回的值是[number, Dispatch<SetStateAction<number>>]
类型的元组,其中Dispatch
和SetStateAction
是从react导入的。所以使用模拟默认值,它看起来像:
import { createContext, Dispatch, SetStateAction } from "react";
const CounterContext = createContext<
[number, Dispatch<SetStateAction<number>>]
>([0, () => {}]);