【发布时间】:2019-06-25 08:13:55
【问题描述】:
我有一个超级简单的 React Typescript 项目,它使用 Context API 来传递一个 useState 钩子。
export const AppContext = React.createContext(null);
function App() {
const [value, setValue] = React.useState(3);
return (
<AppContext.Provider
value={{
value,
setValue
}}
>
<div>
<h1>App</h1>
<Child />
</div>
</AppContext.Provider>
);
}
在代码沙盒上运行良好: https://codesandbox.io/s/interesting-lamarr-fyy1b
但是,当我使用 Create React App (npx create-react-app project-name --typescript) 创建一个项目并尝试相同的代码时,我得到一个错误:
类型'{值:数字; setValue: 调度>; }' 不可分配给类型“null”。 TS2322
我认为这是因为null 是AppContext 的初始值,但随后被传递给Provider 的value 覆盖?
如果是这种情况,我该如何解决?我假设一种方法可以放松 TypeScript 设置?然而,有没有更优雅的方式来编写代码来避免这个问题?我是 TypeScript 和 Context API 的新手,所以不确定我是在以一种不可取的方式做一个或两个。
【问题讨论】:
标签: typescript create-react-app