1
是否可以爲組件定義默認上下文,以便如果父組件未將上下文傳遞給子組件,那麼子組件不會中斷?我現在唯一能想到的就是在React中設置默認上下文
constructor() {
super();
if (!this.context.role) {
this.context.role = 'public';
}
}
這樣可以嗎?
是否可以爲組件定義默認上下文,以便如果父組件未將上下文傳遞給子組件,那麼子組件不會中斷?我現在唯一能想到的就是在React中設置默認上下文
constructor() {
super();
if (!this.context.role) {
this.context.role = 'public';
}
}
這樣可以嗎?
上下文與道具相似,只不過上下文中的更改並未實際觸發渲染。通常,上下文從狀態或商店中獲取它的價值,所以這通常不是問題。另一個缺點是與道具不同,React沒有提供設置默認值的方法。
您可以在react的回購庫中提出功能請求。解決方法是在使用它之前爲其分配默認值。 e.g:
class MyComponent {
// use this.getRole to access the role
getRole() {
return this.context.role || 'public';
}
}
編輯:您的代碼段是行不通的,因爲背景值可能可以獲得由父渲染流水線的過程中重寫;加上它沒有記錄直接更新上下文對象時會發生什麼。