freeCodeCamp/curriculum/challenges/english/03-front-end-libraries/react/define-an-html-class-in-jsx.english.md
Randell Dawson f2df76c099 fix(curriculum): Remove unnecessary assert message argument from English Front End Libraries challenges - 02 (#36409)
* fix: removed assert msg argument

* fix: removed more assert msg args

* fix: removed more assert msg args
2019-07-24 13:07:46 +01:00

1.7 KiB

id, title, challengeType, isRequired
id title challengeType isRequired
5a24c314108439a4d4036160 Define an HTML Class in JSX 6 false

Description

Now that you're getting comfortable writing JSX, you may be wondering how it differs from HTML. So far, it may seem that HTML and JSX are exactly the same. One key difference in JSX is that you can no longer use the word class to define HTML classes. This is because class is a reserved word in JavaScript. Instead, JSX uses className. In fact, the naming convention for all HTML attributes and event references in JSX become camelCase. For example, a click event in JSX is onClick, instead of onclick. Likewise, onchange becomes onChange. While this is a subtle difference, it is an important one to keep in mind moving forward.

Instructions

Apply a class of myDiv to the div provided in the JSX code.

Tests

tests:
  - text: The constant <code>JSX</code> should return a <code>div</code> element.
    testString: assert.strictEqual(JSX.type, 'div');
  - text: The <code>div</code> has a class of <code>myDiv</code>.
    testString: assert.strictEqual(JSX.props.className, 'myDiv');

Challenge Seed

const JSX = (
  <div>
    <h1>Add a class to this div</h1>
  </div>
);

After Test

ReactDOM.render(JSX, document.getElementById('root'))

Solution

const JSX = (
<div className = 'myDiv'>
  <h1>Add a class to this div</h1>
</div>);