React Element のインスタンスから React コンポーネントによって公開されたメソッドを呼び出したいです。
例えば、このjsfiddlealertMessage
参照からメソッドを呼び出したいですHelloElement
。
追加のラッパーを書かずにこれを実現する方法はありますか?
編集(JSFiddle からコードをコピー)
<div id="container"></div>
<button onclick="onButtonClick()">Click me!</button>
var onButtonClick = function () {
//call alertMessage method from the reference of a React Element! Something like HelloElement.alertMessage()
console.log("clicked!");
}
var Hello = React.createClass({displayName: 'Hello',
alertMessage: function() {
alert(this.props.name);
},
render: function() {
return React.createElement("div", null, "Hello ", this.props.name);
}
});
var HelloElement = React.createElement(Hello, {name: "World"});
React.render(
HelloElement,
document.getElementById('container')
);
ベストアンサー1
次のようにすることができます
import React from 'react';
class Header extends React.Component{
constructor(){
super();
window.helloComponent = this;
}
alertMessage(){
console.log("Called from outside");
}
render(){
return (
<AppBar style={{background:'#000'}}>
Hello
</AppBar>
)
}
}
export default Header;
このコンポーネントの外部からは以下のように呼び出すことができます
window.helloComponent.alertMessage();