Learn more  » Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

skava / @skava/ui   js

Repository URL to install this package:

Version: 4.2.0-a11y.0 

/ src / components / templates / PLPTemplate / crawlchildren.ddd

function crawlChildren(props) {
  return React.Children.map(props.children, (component, index) => {
    if (component.props.children) {
      crawlChildren(component.props.children)
    }

    // makes a copy of it, since it cannot be changed
    const cloned = React.cloneElement(component, component.props, component.props.children)

    if (component.key === 'header') {
      // renderHeader
    }
    // could get the styles for a certain area - like from the key
    const styles = styled.css `
      ${cloned} {
        color: blue;
        ${HeaderSectionArea.css};
      }
    `
    // we can styled.injectGlobal as well or use styled.withComponent, a few ways
    const Styles = () => <style dangerouslySetInnerHTML={{__html: styles.toString()}} />

    return <React.Fragment><Styles />{cloned}</React.Fragment>
  })
}

class Template {
  render() {
    return <React.Fragment>{crawlChildren(this.props)}</React.Fragment>
  }
}

<Template>
  <Header key="header" /> 
  <Aside key="sidebar" />
  <Main key="main">
    // <header key="header" />  
  </Main>
  <Footer key="footer" />
</Template>