【问题标题】:React and Typescript: Convention for classes when no props are being passedReact 和 Typescript:没有传递任何道具时的类约定
【发布时间】:2017-05-07 16:32:01
【问题描述】:

我想知道在 Typescript 中指定 React 组件没有 props 的正确方法是什么。

如果我有一个组件,我可以通过两个接口指定 props 和 state 的内容:

interface MyProps {
  text: string
}

interface MyState {
  count: number
}

class MyComponent extends React.Component<MyProps, MyState> {
  ...
}

那么,如果我的组件没有道具,我应该使用voidundefined 还是{}

【问题讨论】:

  • 我不认为有“正确的方法”可以做到这一点,但是当组件没有道具(或没有状态)时,我通常使用void,它是written in the docs:@ 987654327@
  • {} 从类型系统的角度来看是更可取的。 undefined 根本不准确,void 毫无意义。 @NitzanTomer 没有任何道具映射到空集的概念,而不是根本没有集?
  • 感谢您的提示!
  • @AluanHaddad 我想这取决于您要传达的内容。当一个组件没有任何 props 时,我通常更愿意将其视为一个没有 props 概念的组件,而不是一个没有 props 的组件。当有继承并且父类不需要任何道具时,我会使用{}。但是,这是个人喜好。
  • @NitzanTomer 谢谢你的解释,我很感激。

标签: javascript reactjs typescript


【解决方案1】:

Typescript 2.3 的公告中回答了这个确切的(几乎)问题。

但是,大多数时候,组件从不使用状态。在这些情况下,我们可以将类型写为 object 或 {},但我们必须明确地这样做:

class FooComponent extends React.Component<FooProps, object> {
    // ...
}

因此,在您的情况下,您只需将 object 用于 props 参数而不是 state 参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-01
    • 2021-07-21
    • 2020-01-09
    • 1970-01-01
    • 2022-01-03
    • 2017-11-28
    • 2021-09-08
    • 2023-03-12
    相关资源
    最近更新 更多