Observe que forneci uma resposta mais aprofundada aqui
Wrapper de tempo de execução:
É a maneira mais idiomática.
const Wrapper = ({children}) => (
<div>
<div>header</div>
<div>{children}</div>
<div>footer</div>
</div>
);
const App = () => <div>Hello</div>;
const WrappedApp = () => (
<Wrapper>
<App/>
</Wrapper>
);
Observe que children
é um "suporte especial" no React, e o exemplo acima é açúcar sintático e é (quase) equivalente a<Wrapper children={<App/>}/>
Wrapper de inicialização / HOC
Você pode usar um componente de ordem superior (HOC). Eles foram adicionados ao documento oficial recentemente.
// Signature may look fancy but it's just
// a function that takes a component and returns a new component
const wrapHOC = (WrappedComponent) => (props) => (
<div>
<div>header</div>
<div><WrappedComponent {...props}/></div>
<div>footer</div>
</div>
)
const App = () => <div>Hello</div>;
const WrappedApp = wrapHOC(App);
Isso pode levar a (pouco) melhores desempenhos, porque o componente do wrapper pode causar um curto-circuito na renderização um passo à frente com shouldComponentUpdate, enquanto no caso de um wrapper de tempo de execução, o prop filho provavelmente sempre será um ReactElement diferente e causará novas renderizações mesmo que seus componentes estendam o PureComponent.
Observe que o connect
Redux costumava ser um wrapper de tempo de execução, mas foi alterado para um HOC, pois permite evitar novas renderizações inúteis se você usar a pure
opção (o que é verdadeiro por padrão)
Você nunca deve chamar um HOC durante a fase de renderização, pois a criação de componentes do React pode ser cara. Você deve chamar esses wrappers na inicialização.
Observe que, ao usar componentes funcionais como acima, a versão HOC não fornece nenhuma otimização útil porque os componentes funcionais sem estado não implementam shouldComponentUpdate
Mais explicações aqui: https://stackoverflow.com/a/31564812/82609
this.props.children
faz parte da API do componente e espera-se que seja usado dessa maneira. Os exemplos da equipe do React usam essa técnica, como na transferência de objetos e quando se fala de um único filho .