鍍金池/ 問答/HTML/ 對話框的顯示關(guān)閉應(yīng)該由父組件還是子組件決定?

對話框的顯示關(guān)閉應(yīng)該由父組件還是子組件決定?

一個(gè)簡單的對話框 有顯示/關(guān)閉狀態(tài)

我覺得以下情況都可以做
1 由父組件控制(props) 當(dāng)子組件中的關(guān)閉btn被點(diǎn)擊時(shí) 子組件通知父組件更改props

2 由子組件控制 子組件通過自己的state控制顯示/關(guān)閉 父組件需要調(diào)用子組件的方法實(shí)現(xiàn)子組件顯示跟關(guān)閉

我個(gè)人比較傾向于方法2 因?yàn)橛X得比較單純(狀態(tài)都由子組件控制 子組件有種系統(tǒng)的感覺) 但是有大佬說 方法1比較偏向數(shù)據(jù)驅(qū)動 比較純粹 請問哪一種比較好 比較符合組件化思想?

回答
編輯回答
歆久

一個(gè)好的組件應(yīng)該盡量通過props來控制,少用或不用state

2017年12月13日 23:44
編輯回答
深記你

個(gè)人覺得對話框不應(yīng)該是某個(gè)組件的子組件吧。
對話框應(yīng)該是一個(gè)通用組件,我更喜歡把它放在根節(jié)點(diǎn)上,然后用 vuex 之類的來傳遞顯示內(nèi)容和控制開啟關(guān)閉。
當(dāng)然如果不用 vuex 之類的狀態(tài)管理工具的話,可以用全局事件來控制。

2018年1月4日 20:37
編輯回答
陪妳哭

如果不需要通知父組件做什么,直接子組件關(guān)閉就好了吧,如果需要觸發(fā)事件 @output()事件出來,使用彈框的地方進(jìn)行捕獲處理

2018年2月14日 16:40
編輯回答
哎呦喂

既然是數(shù)據(jù)驅(qū)動,就不應(yīng)該讓外界調(diào)用內(nèi)部的方法,完全通過數(shù)據(jù)控制,感覺第一種更符合組件化思想

2017年1月30日 17:03
編輯回答
冷咖啡

父組件props傳數(shù)據(jù)來控制比較好

2017年7月4日 11:16