You’ve learned that a React component is a small, reusable chunk of code that is responsible for one job, which often involves rendering HTML.
Here’s another fact about components: we can use a JavaScript class to define a new React component. We can also define components with JavaScript functions, but we’ll focus on class components first.
All class components will have some methods and properties in common (more on this later). Rather than rewriting those same properties over and over again every time, we extend the Component
class from the React library. This way, we can use code that we import from the React library, without having to write it over and over again ourselves.
After we define our class component, we can use it to render as many instances of that component as we want.
What is React.Component
, and how do you use it to make a component class?
React.Component
is a JavaScript class. To create your own component class, you must subclass React.Component
. You can do this by using the syntax class YourComponentNameGoesHere extends React.Component {}
.
JavaScript classes and subclassing are a complex topic beyond the scope of this course. If you aren’t comfortable with them, here are some good resources to consult: 1 2 3 4.
Take another look at the code from the first exercise:
import React from 'react'; import ReactDOM from 'react-dom'; class MyComponentClass extends React.Component { render() { return <h1>Hello world</h1>; } } ReactDOM.render( <MyComponentClass />, document.getElementById('app') );
A lot of it is still unfamiliar, but you can understand more than you could before!
On line 4, you know that you are declaring a new component class, which is like a factory for building React components. You know that React.Component
is a class, which you must subclass in order to create a component class of your own. You also know that React.Component
is a property on the object which was returned by import React from 'react'
on line 1.
Instructions
Skip line 3. On line 4, declare a new component class by writing class x extends React.Component {}
.
Don’t put anything between the curly braces just yet!