我有一個包含按鈕的標題組件,我希望這個按鈕在點擊時顯示另一個組件(模式頁面)。如何從另一個組件調用組件方法?
我可以做這樣的事情:
這裏是我的頭組件:
import ComponentToDisplay from './components/ComponentToDisplay/index'
class Header extends React.Component {
constructor(props) {
super(props)
}
props : {
user: User
}
_handleInvitePlayerClick =() => {
this.refs.simpleDialog.show();
}
render(){
return(
<Button onClick={this._handleInvitePlayerClick} ><myButton/></Button>
<ComponentToDisplay />
)
}
}
這裏是我的其他組件上的按鈕被點擊時應該顯示的模態頁面組件:
class ComponentToDisplay extends React.Component {
componentDidMount() {
}
render() {
return (
<div>
<SkyLight
ref="simpleDialog"
title={"Title for the modal"}>
{"Text inside the modal."}
<Button onClick={() => this.refs.simpleDialog.hide()}>{"Close modal"}</Button>
</SkyLight>
</div>
)
}
}
庫正在使用的模式:https://github.com/marcio/react-skylight
你應該在你的'ComponentToDisplay'中加入'ref'屬性,它至少要在'this.refs'下注冊 – stinodes
,但是在所有的情況下,你只需要點擊更新一個狀態並將其作爲一個道具傳遞給你的對話框可以決定它是否應該渲染。 – stinodes
[ReactJS - 從另一個組件調用一個組件方法]的可能的重複(https://stackoverflow.com/questions/39119537/reactjs-call-one-component-method-from-another-component) –