freeCodeCamp/curriculum/challenges/english/03-front-end-libraries/react/write-a-react-component-fro...

2.5 KiB

id title challengeType isRequired forumTopicId
5a24c314108439a4d4036168 Write a React Component from Scratch 6 false 301424

Description

Now that you've learned the basics of JSX and React components, it's time to write a component on your own. React components are the core building blocks of React applications so it's important to become very familiar with writing them. Remember, a typical React component is an ES6 class which extends React.Component. It has a render method that returns HTML (from JSX) or null. This is the basic form of a React component. Once you understand this well, you will be prepared to start building more complex React projects.

Instructions

Define a class MyComponent that extends React.Component. Its render method should return a div that contains an h1 tag with the text: My First React Component! in it. Use this text exactly, the case and punctuation matter. Make sure to call the constructor for your component, too. Render this component to the DOM using ReactDOM.render(). There is a div with id='challenge-node' available for you to use.

Tests

tests:
  - text: There should be a React component called <code>MyComponent</code>.
    testString: getUserInput => assert(getUserInput('index').replace(/\s/g, '').includes('classMyComponentextendsReact.Component{'));
  - text: <code>MyComponent</code> should contain an <code>h1</code> tag with text <code>My First React Component!</code> Case and punctuation matter.
    testString: assert((function() { const mockedComponent = Enzyme.mount(React.createElement(MyComponent)); return mockedComponent.find('h1').text() === 'My First React Component!'; })());
  - text: <code>MyComponent</code> should render to the DOM.
    testString: assert(document.getElementById('challenge-node').childNodes.length === 1);

Challenge Seed

// change code below this line

Solution

// change code below this line
class MyComponent extends React.Component {
  constructor(props) {
    super(props);
  }
  render() {
    return (
      <div>
        <h1>My First React Component!</h1>
      </div>
    );
  }
};

ReactDOM.render(<MyComponent />, document.getElementById('challenge-node'));