reactjs - 获取对组件类实例的引用

标签 reactjs typescript

我有一个扩展 React.Component 的 typescript 类:

class MyComponent extends React.Component<{}, {}>
{
    constructor(props: {})
    {
        super(props);
    }

    public render()
    {
        return <span>Test</span>;
    }

    public MyMethod() {
        console.log("Working fine");
    }
}

然后有一个地方我必须手动创建一个实例并将其附加到 DOM:

var component = MyComponent;
var element = React.createElement(component, {}, null);
ReactDOM.render(element, myDomElementContainer);

由于系统的架构限制,我需要为该组件存储对我的类实例的引用以供以后使用,问题是我在创建的元素中找不到对我的类实例的任何引用,它只是通过属性 type 引用该类。

React.createElement 只允许我提供类,ReactDOM.render 不喜欢手动实例化的对象。

为了实例化自定义组件、将其附加到 DOM 并获取对组件类实例的引用,我应该怎么做?

最佳答案

您有几个选择:

(1) 使用ReactDOM.render的返回值:

var element = ReactDOM.render(<MyComponent />, myDomElementContainer);

(2) 使用React.createElement :

var element = React.createElement(MyComponent);
ReactDOM.render(element);

(3) 使用refs :

var element;
ReactDOM.render(<MyComponent ref={el => element = el } />, myDomElementContainer);

MyComponent 的实例被渲染时,该实例将被分配给 element

关于reactjs - 获取对组件类实例的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41147673/

相关文章:

javascript - 无法在其他函数中访问 this.state

reactjs - 具有 openApi 后端的模拟服务 worker

javascript - 验证 DOM 嵌套 (...) : <button> Warning

typescript - 是否可以存储包含对象的枚举?

javascript - React router dom在一种情况下显示公共(public)组件并在另一种情况下隐藏

javascript - 服务 worker - 最简单的实现

javascript - ES6动态解构

Angular 2 指令及其属性

Angular:与 mat-select 的 2 向绑定(bind)不起作用,在代码中赋值会导致其在 UI 中重置

javascript - 使用 RXJS,有没有办法生成一个可观察对象,当源可观察对象当前发出的项目数量相同时,该可观察对象会发出?