#reactjs
#reactjs
Вопрос:
Можно ли определить контексты по умолчанию для компонентов, чтобы, если родительский компонент не передавал контекст дочернему элементу, дочерний элемент не прерывался? Единственное, о чем я могу думать на данный момент, это
constructor() {
super();
if (!this.context.role) {
this.context.role = 'public';
}
}
Будет ли это работать?
Комментарии:
1. Привет, вы когда-нибудь находили решение этой проблемы? Я испытываю то же самое.
Ответ №1:
Контекст похож на props, за исключением того, что изменение контекста фактически не запускает рендеринг. Обычно context берет свое значение из состояния или хранилища, так что обычно это не проблема. Другим недостатком является то, что в отличие от props, React не предоставляет способа установить для него значение по умолчанию.
Вероятно, вы можете сделать запрос функции в репозитории react. Обходным путем было бы присвоить ему значение по умолчанию перед его использованием. например:
class MyComponent {
// use this.getRole to access the role
getRole() {
return this.context.role || 'public';
}
}
Редактировать: ваш фрагмент кода не будет работать, потому что значение контекста может быть переопределено родительским во время конвейера рендеринга; кроме того, не задокументировано, что произойдет при непосредственном обновлении объекта контекста.