@vaskadogana
Frontend developer

Как написать компонент который будет возвращать компонент который в него положили?

ниже пример. Суть в том, что хочу компонент MayBeHidden подписать на store и в зависимости от прав пользователя возвращать содержимое или нет. Но столкнулся с тем, что:
1. компонент который ложу возвращает и принимает, значения. В случае с переменной написал {...this.props}, а тут что-то торможу
2. то, что планирую ложить внутрь довольно разного плана, от кнопки/формы до таблицы или целой страницы.
<MayBeHidden>
            <BtnAdd 
                pasword_placeholder = {'Введите пароль'} 
                name_placeholder = {'Введите имя'} 
                btnname = {'Добавить пользователя'}
                dataFromform = {this.adduser}
                kindUser = {'User'}
                defaultgroup = {this.props.login}
            >    
            </BtnAdd>  
</MayBeHidden>
  • Вопрос задан
  • 303 просмотра
Решения вопроса 2
Staltec
@Staltec
Node.js разработчик
render() {
  const isHidden = false; 

  if (isHidden) return null;

  return <children.type {...children.props} additionalProp="an value" />;
}
Ответ написан
Комментировать
@vaskadogana Автор вопроса
Frontend developer
пока что решил свой вопрос по другому, но возврат содержимого вроде вот так происходит:
class SomeContextProvider extends React.Component {
  getChildContext() {
    return {some: "context"}
  }

  render() {
     return React.Children.only(this.props.children)
  }
}


спасибо Evgeniy Kvasyuk за статью https://habrahabr.ru/post/309422/
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
EvgeniyKvasyuk
@EvgeniyKvasyuk
https://habrahabr.ru/post/309422/ - замечательная статья, после которой вы легко напишите High order component
Ответ написан
Комментировать
miraage
@miraage
Старый прогер
render() {
  return <div>{this.props.children}</div>
}
Ответ написан
@davidnum95
Для таких случаев правильнее использовать HOC.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы