JSX

3 minutes
Share the link to this page
Copied
  Completed
You need to have access to the item to view this lesson.
One-time Fee
$69.99
List Price:  $99.99
You save:  $30
€65.43
List Price:  €93.47
You save:  €28.04
£55.38
List Price:  £79.12
You save:  £23.73
CA$95.75
List Price:  CA$136.80
You save:  CA$41.04
A$107.11
List Price:  A$153.03
You save:  A$45.91
S$95.36
List Price:  S$136.24
You save:  S$40.87
HK$547.90
List Price:  HK$782.75
You save:  HK$234.85
CHF 63.27
List Price:  CHF 90.39
You save:  CHF 27.12
NOK kr772.60
List Price:  NOK kr1,103.76
You save:  NOK kr331.16
DKK kr487.88
List Price:  DKK kr697.01
You save:  DKK kr209.12
NZ$117.84
List Price:  NZ$168.36
You save:  NZ$50.51
د.إ257.06
List Price:  د.إ367.25
You save:  د.إ110.18
৳7,700.43
List Price:  ৳11,001.09
You save:  ৳3,300.65
₹5,837.33
List Price:  ₹8,339.41
You save:  ₹2,502.07
RM333.67
List Price:  RM476.70
You save:  RM143.02
₦92,489.99
List Price:  ₦132,134.22
You save:  ₦39,644.23
₨19,533.24
List Price:  ₨27,905.82
You save:  ₨8,372.58
฿2,588.46
List Price:  ฿3,697.97
You save:  ฿1,109.50
₺2,275.23
List Price:  ₺3,250.47
You save:  ₺975.23
B$358.08
List Price:  B$511.57
You save:  B$153.48
R1,314.42
List Price:  R1,877.82
You save:  R563.40
Лв127.95
List Price:  Лв182.79
You save:  Лв54.84
₩96,452.39
List Price:  ₩137,795.03
You save:  ₩41,342.64
₪267.23
List Price:  ₪381.78
You save:  ₪114.54
₱4,034.64
List Price:  ₱5,764.02
You save:  ₱1,729.38
¥11,065.06
List Price:  ¥15,807.91
You save:  ¥4,742.85
MX$1,201.03
List Price:  MX$1,715.83
You save:  MX$514.80
QR255.83
List Price:  QR365.49
You save:  QR109.65
P965.79
List Price:  P1,379.76
You save:  P413.97
KSh9,296.24
List Price:  KSh13,280.92
You save:  KSh3,984.67
E£3,349.82
List Price:  E£4,785.67
You save:  E£1,435.84
ብር4,026.64
List Price:  ብር5,752.60
You save:  ብር1,725.95
Kz58,375.85
List Price:  Kz83,397.65
You save:  Kz25,021.80
CLP$66,628.33
List Price:  CLP$95,187.41
You save:  CLP$28,559.08
CN¥507.11
List Price:  CN¥724.48
You save:  CN¥217.36
RD$4,113.13
List Price:  RD$5,876.15
You save:  RD$1,763.02
DA9,393.54
List Price:  DA13,419.92
You save:  DA4,026.38
FJ$158.35
List Price:  FJ$226.22
You save:  FJ$67.87
Q545.71
List Price:  Q779.62
You save:  Q233.91
GY$14,678.83
List Price:  GY$20,970.66
You save:  GY$6,291.82
ISK kr9,808.34
List Price:  ISK kr14,012.52
You save:  ISK kr4,204.17
DH708.72
List Price:  DH1,012.51
You save:  DH303.78
L1,243.72
List Price:  L1,776.81
You save:  L533.09
ден4,025.16
List Price:  ден5,750.48
You save:  ден1,725.31
MOP$565.76
List Price:  MOP$808.27
You save:  MOP$242.50
N$1,323.80
List Price:  N$1,891.23
You save:  N$567.42
C$2,582.07
List Price:  C$3,688.83
You save:  C$1,106.76
रु9,353.99
List Price:  रु13,363.42
You save:  रु4,009.42
S/263.57
List Price:  S/376.55
You save:  S/112.97
K270.82
List Price:  K386.91
You save:  K116.08
SAR262.49
List Price:  SAR375
You save:  SAR112.51
ZK1,859.31
List Price:  ZK2,656.27
You save:  ZK796.96
L325.94
List Price:  L465.65
You save:  L139.71
Kč1,644.39
List Price:  Kč2,349.23
You save:  Kč704.84
Ft25,663.75
List Price:  Ft36,664.08
You save:  Ft11,000.32
SEK kr762.14
List Price:  SEK kr1,088.81
You save:  SEK kr326.67
ARS$61,304.48
List Price:  ARS$87,581.58
You save:  ARS$26,277.10
Bs486.59
List Price:  Bs695.16
You save:  Bs208.56
COP$277,527.04
List Price:  COP$396,484.19
You save:  COP$118,957.15
₡35,650.64
List Price:  ₡50,931.67
You save:  ₡15,281.02
L1,732.56
List Price:  L2,475.19
You save:  L742.63
₲522,432.19
List Price:  ₲746,363.69
You save:  ₲223,931.50
$U2,704.33
List Price:  $U3,863.50
You save:  $U1,159.16
zł282.07
List Price:  zł402.98
You save:  zł120.90
Already have an account? Log In

Transcript

We have one more thing to cover before we jump into creating our first react app JSX. If you recall earlier I mentioned JSX is an HTML like syntax used to describe react elements. Although it may look a lot like HTML, it's actually an extension of JavaScript. And most people find it easier to work with and reacts top level API calls like react create element. With that being said, it's important to remember that JSX still gets compiled down to react create element calls. To demonstrate, I'll use a tool that actually show us what JSX gets compiled down to.

So I'm going to just go ahead and copy our app component. On the left, you'll see the JSX version of the component. And on the right, you'll actually see the compiler output from that component. If we take a closer look at the compiled version of the component, you can actually see it's made up of multiple calls to react create element, each one of these calls corresponds to an element in our JSX component. We have our main react create element call, which is a div which goes back to our main div here that has a class name of app and then it has some Child Elements as well an h1 and an h2 which we in both see represent And in here by two more calls to react create element. When comparing these two versions of the same component, I find that JSX version much easier to read.

I think this will hold true for most developers that are familiar with HTML, all the lessons to follow will be using JSX. But I wanted to show what is going on under the hood when you create a JSX component, the real beauty of JSX as it comes with the full power of JavaScript behind it, let's start with some JSX fundamentals. First, embedding expressions. This all sounds really fancy, but we've actually already worked with an expression here, our props dot version that's being rendered on screen as an expression in JSX. Expressions will just be wrapped in curly braces, the contents of the curly braces are what are actually being evaluated. In this case, we're just outputting the value of props dot version to the screen.

Before we continue, I want to make a couple quick tweaks to code sandbox, we're going to start by collapsing our file editor by clicking on the File editor tab. And then I'm just going to shrink our browser window a bit here on the right. Now I'm going to go ahead and update our expression. So that actually renders a message conditionally based on the value of version, a version is greater than one, I'm going to render out a message that says invalid version version is less than or equal to one, then I'm going to actually render out the props version like we were doing before. If I go ahead and update our version to be 2.0, though, you can now see that we actually have a new message invalid version rendered to screen. As you can see, we didn't have to do anything special here to get this to work.

This is just a plain old JavaScript ternary operator that renders one message or another based on the condition. This is what I love about JSX is just JavaScript, no need to learn yet another templating language. Now that we've made some changes, I'm gonna go ahead and save it work. You may have noticed soon as we save our code actually auto format. This is because code sandbox actually using a tool called prettier, which takes the monotonous job of code formatting and does it for you automatically. Now that we've covered JSX expressions, let's move on to attributes.

When specifying attributes in JSX. There are some key differences when compared to HTML attributes. react, Dom uses camelcase for attribute names. For example lowercase on click becomes camel case on click lowercase tab index becomes camel case tab index. When specifying attribute values, you have two options. The first is string literals, and is straightforward.

And the second is expressions which allow for creating dynamic attribute values like so just to show this is working. I'm going to pop open the console here you can see that this is actually evaluating to a tab index have to be careful when using expressions as attribute values not to wrap it in quotes. This will result in the expression not being evaluated and being treated as a string literal instead. And that concludes the basics of JSX. But don't worry, we'll be getting into more advanced JSX usage in the upcoming lessons.

Sign Up

Share

Share with friends, get 20% off
Invite your friends to LearnDesk learning marketplace. For each purchase they make, you get 20% off (upto $10) on your next purchase.