当前位置: 首页 > 知识库问答 >
问题:

在typescript中定义功能组件的状态接口

鄢英毅
2023-03-14

有了钩子,功能性React组件不再是无状态组件。它可以有状态,所以为功能组件定义状态接口是有意义的。

虽然打字稿不会抛出任何错误/警告,但最好定义一下。

需要帮助做同样的事情。

共有1个答案

王棋
2023-03-14

当您使用钩子时,状态不会存储在组件中,而是存储在组件上下文中的某个地方,并且可以在组件中访问该上下文。当您查看use State钩子的签名时,它说:

function useState<S>(initialState: S | (() => S)): [S, Dispatch<SetStateAction<S>>];

这意味着你的状态是从它的初始值推断出来的。如果您想变得超级显式,可以将泛型传递给该函数:

js prettyprint-override">const [s, setS] = useState<{stateShape: StateShape}>({});

但是正如我所说…组件仍然是无状态的,因为状态没有存储在组件中。

 类似资料:
  • 问题内容: 我正在尝试将在这里找到的这个很棒的动画转换为React可重用的组件。看来此组件将需要一个父组件作为画布,而许多子组件则为。 出于性能方面的考虑,将它们变成无状态组件可能会更好,因为会有很多这样的组件。我不熟悉制作无状态组件,并且想知道应该在哪里定义和中定义的和函数。 无状态组件的功能是在组件内部还是外部?换句话说,以下哪个更好? 1: 2: 每种都有什么优点/缺点,其中哪一种对我的特定

  • 在不使用类的情况下,如何在react的功能性无状态组件中使用PropTypes?

  • 我刚刚用打字稿开始了一个新的反应项目,在功能组件中定义自定义道具时遇到了困难。 我查找了如何定义自定义道具,并找到了一种定义接口的方法,该接口详细描述了我传递给函数的道具类型,但是当我试图在我的主应用程序上运行它时,我得到一个错误消息 类型“{ digit: number; }”不能分配给类型“IntrinsicAttributes”。属性“数字”在类型“内部属性”上不存在。TS2322 我的代码

  • 问题内容: 结合使用TypeScript和React,我们不再需要扩展,以使编译器知道所有react组件prop都可以有子代: 但是,无状态功能组件似乎并非如此: 发出编译错误: 错误:(102、17)TS2339:类型“ MyProps”上不存在属性“子级”。 我猜这是因为编译器实际上没有办法知道在props参数中将提供香草函数。 所以问题是我们应该如何在TypeScript的无状态功能组件中使

  • 使用带有React的TypeScript,我们不再需要扩展,以便编译器知道所有React组件Props都可以有子级: 然而,无状态功能组件似乎不是这样: 发出编译错误: 错误:(102,17)TS2339:类型“MyProps”上不存在属性“children”。 我想这是因为编译器真的无法知道在props参数中会给出

  • 问题内容: 以下是两个 几乎 完成相同任务的React组件。一个是功能;另一个是功能。另一个是一类。每个组件都有一个带有异步侦听器的组件,该侦听器会在更改时进行更新。我需要能够像在经典组件中那样在功能组件中进行访问。 万一有一个以上的情况,不应在全球范围内。 不能包含在功能范围内,因为每次渲染时都会重新初始化。也不应处于状态,因为更改时组件无需呈现。 不会出现此问题,因为它在组件的整个生命周期中都