Size: a a a

2020 February 14

LK

Leonid Kuznetsov in React Kyiv
Serhey Shmyg
Можна накидати щось схоже
благодарю
источник

LK

Leonid Kuznetsov in React Kyiv
// 👇 Create the styled component
const ParentWrapper = styled('div')`
 background: blue;
`;

// 👇 Create an actual React component
class Parent extends React.Component {
 renderChildren = () => {
   const { children } = this.props;
   // 👇 The <Parent /> renders it's children, but passes in this.props.gutter as the gutter to each child
   return React.Children.map(children, (child) => React.cloneElement(child, {
     gutter: this.props.gutter,
   }));
 }

 render() {
   return <ParentWrapper>{this.renderChildren()}</ParentWrapper>
 }
}

const Child = styled('div')`
 margin: ${props => props.gutter ? '10px' : null ;}
`

render() {
 return(
   <div>
     {/* 👇 The parent gets the gutter here */}
     <Parent gutter>
       <Child />
     </Parent>
   </div>
 )
}
источник

LK

Leonid Kuznetsov in React Kyiv
Еще вот такой прием нашел
источник

LK

Leonid Kuznetsov in React Kyiv
тоже интересный
источник

LK

Leonid Kuznetsov in React Kyiv
таким образом можно создать wrapper Parent присваивать ему пропсы а уже к Child их применять
источник

LK

Leonid Kuznetsov in React Kyiv
@sshmyg это в принципе то что ты показал
источник

SS

Serhey Shmyg in React Kyiv
Leonid Kuznetsov
@sshmyg это в принципе то что ты показал
Якщо ситуація разова я б чесно кажучи руками додав і все ;)
источник

LK

Leonid Kuznetsov in React Kyiv
Serhey Shmyg
Якщо ситуація разова я б чесно кажучи руками додав і все ;)
нет не разовая)
источник

RM

Roman Mikulin in React Kyiv
Привет всем, никто не подскажет по работе, где есть вакансии на позицию junior?
источник

MK

Mityai Kowalski in React Kyiv
Roman Mikulin
Привет всем, никто не подскажет по работе, где есть вакансии на позицию junior?
в інтернеті
источник

V

Vlad in React Kyiv
Roman Mikulin
Привет всем, никто не подскажет по работе, где есть вакансии на позицию junior?
привет. доу, джини и линкидн
источник

М

Мерч in React Kyiv
Roman Mikulin
Привет всем, никто не подскажет по работе, где есть вакансии на позицию junior?
Там же, где и все вакансии
Work.ua, dou.ua, rabota.ua
источник

М

Мерч in React Kyiv
Рекомендую джинни
источник

LK

Leonid Kuznetsov in React Kyiv
Пытаюсь рекурсивно пробежать по всем children(React elements) и прокинуть им prop, все работает отлично пока не появляеться компонент ToolTip от material ui и падает на следующей ошибке
источник

LK

Leonid Kuznetsov in React Kyiv
сам код
function recursiveMap(children, fn) {
 return React.Children.map(children, child => {
   if (!React.isValidElement(child)) {
     return child;
   }

   if (child.props.children) {
     child = React.cloneElement(child, {
       children: recursiveMap(child.props.children, fn),
     });
   }

   return fn(child);
 });
}
источник

LK

Leonid Kuznetsov in React Kyiv
const Parent = (props: any): ReactElement => (
 <div>
   {deepMap(props.children, (child: ReactNode) => {
     if (child) {
       return React.cloneElement(child as ReactElement, {
         ...(child as ReactElement).props,
         type: props.type,
       });
     }
     return child;
   })}
 </div>
);
источник

LK

Leonid Kuznetsov in React Kyiv
не совсем понимаю почему, поскольку я ведь прокидываю ему props
источник

LK

Leonid Kuznetsov in React Kyiv
Failed prop type: Invalid prop `children` of type `array` supplied to `ForwardRef(Tooltip)`, expected a single ReactElement.
источник

LK

Leonid Kuznetsov in React Kyiv
Вообщем все же понял что иду не по правильному пути и посмотрел в сторону context
источник

LK

Leonid Kuznetsov in React Kyiv
@sshmyg спасибо за наводку!
источник