Elements and Components

5 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

When it comes to react, it's all about the components. components are probably my favorite part of developing and react with components, you're able to take any UI and split it into smaller reusable chunks that can work independent of each other. For example, let's take the code sandbox interface we're working in and think about how we might split it into components. Ignoring the header and footer areas, I see the potential for three top level components, a file browser component, file editor component, and a browser window component. And each of these components can be made up of their own components as well. For example, the file browser has an accordion menu that could be its own component, and each item inside the accordion could also be a component.

If you wanted to go further, each items icon can even be a component as well breaking your UI into small manageable components like this has all sorts of benefits including making your code easier to reuse and test. But we can't talk about components without mentioning elements. And element is the smallest building block in react and describes what you eventually see on the screen. To demonstrate I'm going to start by creating a simple h1 element. And inside the element will have some Hello text and then all included in our app components we can render it to This is an example of a very simple element. But elements can be more complex as well.

Here's an example of a more complex element named wrapper that's made up of a div with some paragraph text inside, you can think of elements as the building blocks, they use the piece together your components. So what does a component look like a component in its simplest form is just a function. For example, let's say we had a simple adding function that took two parameters and return the sum of two values. You can see if I pass the add function two and two, I get four log to the console. And if I change the second parameter 10, I get 12 back in the console, but what is really cool is that we can easily convert this add function to be a react component instead, first, use a capital A for the component function name as all components need to start with a capital letter. This is because react will treat components starting with lowercase letter as Dom tags.

Next, instead of the function taking two parameters will take a single parameter name props, props are how you pass data into your component. A component is an immutable function meaning as long as you give it the same input and reacts k prompts should always receive the same output. Now I can take the Add Component and have the app render it and to pass in the values for A and B, you just add them as properties to the component. Now you can see that the sum is being rendered to the screen. When it comes to components, React actually provides two different options. The first and the simpler of the two are functional components, which is a function that has a props parameter and returns a valid react element.

The Add Component we just created as an example of a functional component. The second are class components. And like the name says the component will be a class instead of a function. For example, I can easily convert the Add Component to a class component start by converting const to class, then have the class extend from react component, then add a render function have that return the element instead. And lastly, since props is now an instance variable, add this in front of it. And there you have it a class component, but the output looks exactly the same as before, which begs the question why use a class component at all It just so happens There's a very good reason only class components have access to react state and lifecycle methods.

Neither of these features are available from functional components. Don't worry, we'll get into both state and lifecycle methods later. Another nice feature of components is the children prop. For example, let's say I wanted to create a reusable page layout component. The idea being that all my pages share the same header and footer. I need to pass in different body copy for each page.

So how do I do that? Enter props children. Now I'm going to render the layout component but instead of a self closing tag, I'm going to use an opening and closing tag. And then I'll add some paragraph elements for this layout to body copy. And just like that, we can see that my body copy is being rendered in between my header and footer. You can think of props children as a placeholder for whatever content you include between the opening and closing tags when you render your component.

We're going to go ahead and add in our layout component But this time, I'm going to pass in different body copy, because Leo does using props children, I'm able to pass in different body copy to the same layout component. This is a very powerful feature that allows you to write components that require no knowledge of the children there, including, you may have noticed that when I created the layout component, I wrapped it in a div element. Same with the app component when I added the second layout component. This is because a component should only have a single root element unless using something react calls fragments. To demonstrate, I'm going to remove the wrapper div from the layout component and see what happens. You see, as soon as I do that, I get an error.

Adjacent JSX elements must be wrapped in a closing tag. Pretty much. This is saying I'm expecting a component to return a single element and you've given me three instead. Now there is a way to return multiple elements and that is to use fragments like the error suggests this is handy as it prevents having to wrap our elements in what is a useless div in this case, to update layout. To use fragments, I just need to wrap the elements in the React dot fragment component. Now when our page renders, there won't be an extra div element and our error should go away.

That wraps up everything I wanted to cover in component fundamentals. Next up is taking a look at the HTML like syntax we've been using to write our components called JSX.

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.