React:检查JSX Element是否派生自特定类

时间:2018-02-07 19:29:40

标签: javascript reactjs typescript

我正在使用TypeScript,并希望检查JSX.Element实例是否是另一个React组件的子类。

例如,如果我有Vehicle组件和扩展它的Car组件,那么给定从JSX.Element组件创建的Car,我想要知道它的React组件类是否来自某个组件。

e.g。

isDerivedFrom(jsx, Car) // Should return true
isDevivedFrom(jsx, Vehicle) // Should also return true

我注意到JSX.Element公开了type属性,该属性告诉我React组件的名称,但不告诉我它是否来自某个组件。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:-1)

您可以使用instanceof运算符来完成该操作:

class Vehicle {
    tires: number;

    constructor(tires: number) {
        this.tires = tires;
    }
}

class Car extends Vehicle {
    constructor() {
        super(4);
    }
}

class Cake {
    public recipe: string;
}

const aCar: Car = new Car();

console.log(aCar instanceof Car); // true
console.log(aCar instanceof Vehicle); // true
console.log(aCar instanceof Cake); // false