将jsx转换为反应组件?

时间:2017-10-04 08:48:09

标签: javascript reactjs typescript react-redux

假设我有一个名为'MyComponent'的组件,我想将它存储在typescript中'MyComponent'类型的变量中,但是使用JSX元素初始化它,如:

let comp: MyComponent = <MyComponent somePropInit={3} />

以上代码会产生如下错误:

  'Element'

类型中缺少

'property'componentDidMount'

我正在使用的实际组件:

export class PlayCard extends React.Component<AllCardProps, {}> {
    addToDeck(){...}

我是如何存储它的(我尝试过很多不同的东西,包括使用typeof,Card.PlayCard,PlayCard等):

import * as Card from './PlayCard'
...
let c: Card.PlayCard = <PlayCard Id={32} />

^如果我尝试以上操作我会收到错误

  

'组件&lt; ...&gt;'

类型中缺少'属性'addToDeck'

如果我删除了addToDeck,则错误会转到下一个函数。看起来任何存在的函数都会以某种方式抛出它?

我将如何做到这一点?

1 个答案:

答案 0 :(得分:0)

React组件的生命周期方法是可选值。

以下是界面示例:

interface ComponentLifecycle < P, S > {
    /**
     * Called immediately before mounting occurs, and before `Component#render`.
     * Avoid introducing any side-effects or subscriptions in this method.
     */
    componentWillMount ? () : void;
    /**
     * Called immediately after a compoment is mounted. Setting state here will trigger re-rendering.
     */
    componentDidMount ? () : void;

因此错误不在React / typescript中。您可能使用了导致问题的界面。

参考: