我在父組件傳遞了一個modalShowDom到子組件Sign組件中,用于管理三個彈窗的狀態(tài)(顯示/隱藏),如:
/*Sign組件*/
<Signup modalShowDom={this.props.modalShowDom === 'signup'? 'ui-modal-show' : ''} />
<Signin modalShowDom={this.props.modalShowDom === 'signin'? 'ui-modal-show' : ''} />
<Signout modalShowDom={this.props.modalShowDom === 'signout'? 'ui-modal-show' : ''} />
但這個組件中有關閉按鈕,我的想法是從父組件傳進來modalShow方法,點擊關閉按鈕調(diào)用
<Signup modalShow={this.props.modalShow} modalShowDom={this.props.modalShowDom === 'signup'? 'ui-modal-show' : ''} />
<Signin modalShow={this.props.modalShow} modalShowDom={this.props.modalShowDom === 'signin'? 'ui-modal-show' : ''} />
<Signout modalShow={this.props.modalShow} modalShowDom={this.props.modalShowDom === 'signout'? 'ui-modal-show' : ''} />
但顯示隱藏的狀態(tài)是由兄弟組件Header控制的:
于是我在將父組件的modalShow方法也傳給了Header
<div className='app'>
<Header modalShow={this.modalShow} />
<Sign modalShow={this.modalShow} modalShowDom={this.state.modalShowDom}/>
</div>
Header和Sign都可以來控制Sign的狀態(tài)了,
功能雖然是實現(xiàn)了,但感覺這個邏輯很麻煩,每次都要通過父組件來處理狀態(tài),如果邏輯多了傳入的參數(shù)也多,可讀性也不太好吧
不用redux之類的全局狀態(tài)管理的話:
父組件維護這樣一個狀態(tài)
this.state = {
modal: {
show: false,
type: '' // signin/signup/signout
}
}
并且提供兩個方法
showModal = type => {
this.setState({modal: {show: true, type}});
}
hideModal = () => {
this.setState({modal: {show: false}});
}
給Header傳遞需要的方法過去,如顯示登錄頁面
this.props.showModal('signin');
針對Sign組件,直接用modal.show控制是否顯示,用modal.type控制顯示哪個,如:
{modal.show &&
<Sign type={modal.type} />
}
render() {
const {type} = this.props;
return (
{type === 'signin' &&
<Signin />
}
)
}北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產(chǎn)業(yè)為響應國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復興的升級產(chǎn)業(yè)鏈。利用北京大學優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓領域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術, 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。