为什么我不能从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通过ref
attribute提供了一个您要尝试执行的操作的接口。给组件分配一个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日更新: 更改了示例,以
根据ref
String属性文档中的指南使用引用回调。
问题内容: 如何访问组件的属性。我以为会在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