当前位置: 首页 > 面试题库 >

如何从ReactJS的“外部”访问组件方法?

施华奥
2023-03-14
问题内容

为什么我不能从ReactJS的“外部”访问组件方法?为什么不可能,有什么办法解决呢?

考虑一下代码

var Parent = React.createClass({
    render: function() {
        var child = <Child />;
        return (
            <div>
                {child.someMethod()} // expect "bar", got a "not a function" error.
            </div>
        );
    }
});

var Child = React.createClass({
    render: function() {
        return (
            <div>
                foo
            </div>
        );
    },
    someMethod: function() {
        return 'bar';
    }
});

React.renderComponent(<Parent />, document.body);

问题答案:

React通过refattribute提供了一个您要尝试执行的操作的接口。给组件分配一个ref,其current属性将是您的自定义组件:

class Parent extends React.Class {
    constructor(props) {
        this._child = React.createRef();
    }

    componentDidMount() {
        console.log(this._child.current.someMethod()); // Prints 'bar'
    }

    render() {
        return (
            <div>
                <Child ref={this._child} />
            </div>
        );
    }
}

注意
:仅根据下面的文档,如果子组件被声明为类,则此方法才有效:https :
//facebook.github.io/react/docs/refs-and-the-dom.html#adding-a-
引用到类组件


更新2019-04-01: 更改了示例以使用类和createRef每个最新的React文档。

2016年9月19日更新: 更改了示例,以
根据refString属性文档中的指南使用引用回调。



 类似资料:
  • 问题内容: 如何访问组件的属性。我以为会在this.props中,但事实并非如此。 例如 并在产品列表中 退货 没有任何关键属性。我可以创建另一个属性并为其分配相同的值,但是由于key属性已经被使用,因此这似乎是多余的。 另外,键属性在整个组件中是否必须是唯一的,还是仅在其要呈现的循环或集合中是唯一的? 问题答案: 该属性由React在后台使用,并且不会暴露给您。您将要使用自定义属性并将该数据传递

  • 问题内容: 是否可以从Java内部类中获取对它的引用? 即 问题答案: 您可以像这样访问外部类的实例:

  • 问题内容: 我的应用程序在$ rootScope中初始化一个对象图,如下所示: …然后使用该对象图中的数据(仅1向绑定),就像这样… 这项工作正常,但是如果我随后(在页面渲染完成之后)尝试更新$ rootScope并将原始对象替换为新对象,则将其忽略。我最初以为这是因为AngularJS保留了对原始对象的引用,即使我已经替换了它。 但是,如果将使用方的HTML包装在控制器中,则可以按预期的方式重复

  • 我已经创建了JavaSwing应用程序,其中包含一个jDesktoppane,在它里面我正在从主框架(JFrame)中的切换按钮加载/调用一些内部框架。我使用了jButton组来切换所有的按钮,所以当按下一个按钮时,只有一个帧会切换。 由于我使用了切换按钮,即使我配置了JInternalFrame,相关切换按钮仍将处于按下模式(已选择)。我尝试了很多方法,但无法将切换按钮的状态从选中更改为未选中。

  • 问题内容: 假设我有一个具有子组件的主Vue实例。是否可以从Vue实例外部完全调用属于这些组件之一的方法? 这是一个例子: 因此,当我单击内部按钮时,该方法绑定到其click事件,因此将被调用。无法将事件绑定到外部按钮,我正在使用jQuery监听其单击事件,因此我需要其他一些调用方法。 编辑 看来这可行: 但是,这不是一个好的解决方案,因为我是通过子数组中的索引来引用该组件的,而对于许多组件而言,

  • 问题内容: 我有以下用例。 我的React组件中加载了一些第三方来源的HTML: 在外部加载的HTML内,存在一个针对特定范围的click事件,该事件应调用存在于我的应用程序中的回调函数。 我该把 myCallback 函数放在哪里? 如果将其放在组件类中,则单击跨度时会收到以下错误,因为据我了解,该函数对外部加载的HTML不可见: Uncaught ReferenceError:在HTMLSpa