freeCodeCamp/curriculum/challenges/portuguese/03-front-end-libraries/react/create-a-component-with-com...

3.6 KiB

id title challengeType isRequired videoUrl localeTitle
5a24c314108439a4d4036164 Create a Component with Composition 6 false Crie um componente com composição

Description

Agora, veremos como podemos compor vários componentes do React juntos. Imagine que você está criando um aplicativo e criou três componentes, uma Navbar , um Dashboard e um Footer . Para compor esses componentes juntos, você pode criar um componente pai do App que renderize cada um desses três componentes como filhos . Para renderizar um componente como filho em um componente React, inclua o nome do componente gravado como uma tag HTML customizada no JSX. Por exemplo, no método render você poderia escrever:
Retorna (
<App>
<Navbar />
<Dashboard />
<Rodapé />
</ App>
)
Quando o React encontra uma tag HTML personalizada que faz referência a outro componente (um nome de componente envolto em < /> como neste exemplo), ele renderiza a marcação desse componente no local da tag. Isso deve ilustrar o relacionamento pai / filho entre o componente App e a Navbar , o Dashboard e o Footer .

Instructions

No editor de código, há um componente funcional simples chamado ChildComponent e um componente React chamado ParentComponent . Compor os dois juntos, renderizando o ChildComponent dentro do ParentComponent . Certifique-se de fechar a tag ChildComponent com uma barra. Nota: ChildComponent é definido com uma função de seta ES6 porque esta é uma prática muito comum ao usar o React. No entanto, saiba que isso é apenas uma função. Se você não estiver familiarizado com a sintaxe da função de seta, consulte a seção JavaScript.

Tests

tests:
  - text: O componente React deve retornar um único elemento <code>div</code> .
    testString: 'assert((function() { var shallowRender = Enzyme.shallow(React.createElement(ParentComponent)); return shallowRender.type() === "div"; })(), "The React component should return a single <code>div</code> element.");'
  - text: O componente deve retornar dois elementos aninhados.
    testString: 'assert((function() { var shallowRender = Enzyme.shallow(React.createElement(ParentComponent)); return shallowRender.children().length === 2; })(), "The component should return two nested elements.");'
  - text: O componente deve retornar o ChildComponent como seu segundo filho.
    testString: 'assert((function() { const mockedComponent = Enzyme.mount(React.createElement(ParentComponent)); return mockedComponent.find("ParentComponent").find("ChildComponent").length === 1; })(), "The component should return the ChildComponent as its second child.");'

Challenge Seed

const ChildComponent = () => {
  return (
    <div>
      <p>I am the child</p>
    </div>
  );
};

class ParentComponent extends React.Component {
  constructor(props) {
    super(props);
  }
  render() {
    return (
      <div>
        <h1>I am the parent</h1>
        { /* change code below this line */ }


        { /* change code above this line */ }
      </div>
    );
  }
};

After Test

console.info('after the test');

Solution

// solution required