У меня есть 3 компонента React, которым передается один и тот же реквизит isNewListingsHeader. Я использую Styled Components для стилей CSS. Мне интересно, есть ли более чистый способ передать эту опору в 3 разных стилизованных компонента SortBarWrapper, SortOptionsWrapper и SortOptionsWrapper, чтобы мне не приходилось каждый раз определять isNewListingsHeader.
// Styled Components
const SortBarWrapper = styled.div`
position: relative;
${props => !props.isNewListingsHeader && `
height: 100px;
`}
`
const SortLineWrapper = styled.div`
width: 100%;
${props => !props.isNewListingsHeader && `
position: absolute;
bottom: 0;
`}
`
const SortOptionsWrapper = styled.div`
box-sizing: border-box;
${props => !props.isNewListingsHeader && `
padding-bottom: 24px;
padding-top: 32px;
`}
`
render () {
return (
<SortBarWrapper isNewListingsHeader = {this.props.isNewListingsHeader}>
<SortLineWrapper isNewListingsHeader = {this.props.isNewListingsHeader}>
<SortOptionsWrapper isNewListingsHeader = {this.props.isNewListingsHeader}>
// Display Sort Options
</SortOptionsWrapper>
</SortLineWrapper>
</SortBarWrapper>
)
}





То, что вы делаете, не является неправильным, но я понимаю, что вы хотите высушить свой код. Я не собираюсь говорить, что такое «правильный» способ, потому что технически правильного пути нет, просто способы, которые вы предпочитаете делать на основе вашего стека (например, используете ли вы Redux или любое другое управление состоянием?).
Этот средний пост охватывает несколько методов глубокого вложения компонентов.
Изучите это и выберите то, что работает для вас. Но ради этого разговора - вы делаете это правильно и в стиле "React".
Мы можем использовать контекст API. Создайте поставщика и потребителя. Оберните все компоненты внутри провайдера, Provider принимает свойство value, и данные в этом свойстве доступны для всех дочерних потребителей. И может использовать их внутри потребителя.
«Почему вы должны рассмотреть новый Context API в React? — «Глубокое погружение» Махеша Халдара https://link.medium.com/zrYj36RnhU
Большое спасибо. Это действительно интересно — я использовал метод recompose nest().