Repository files navigation

If you are following the HackYourFuture curriculum we recommend you to start with module 1: HTML/CSS/GIT. To get a complete overview of the HackYourFuture curriculum first, click here.

Please help us improve and share your feedback! If you find better tutorials or links, please share them by opening a pull request.

Introduction to React

  • React is JavaScript Library for building User Interfaces which mainly invovles building single-page applications. The biggest advantage with React is we can create reusable UI Components. It is Maintained by Meta and a Community of individual developers and companies. React can also be used to develop single page, mobile and server-rendered applications with frameworks like Nextjs.
  • Component Based coding. React Builds encapsulated components that manage their own state, then compose them to make complex UIs. Since the component logic is written in JavaScript instead of templates, we can easily pass rich data through the app and keep state out of the DOM.
  • Learn Once, Write Anywhere. We dont make assumptions about the rest of our technology stack, so you can develop new features in React without rewriting existing code. We can also render on the server using Node and Power Mobile apps using React Native.
  • Declarative, React makes it painless to create interactive UIs. Design simple views for each state in your application, and React will efficiently update and render just the right components when your data changes.
  • ReactJS is the most widely used JS Library for developing various web Application.

Module #7 - React.js: Building dynamic UIs with modern JavaScript (Frontend)

React Module

Welcome to the React module! Congratulations on making it this far!

In these 4 weeks we will go back to the frontend and learn how to make faster, more modern user interfaces. In the HTML and JavaScript modules you've learned all about creating webpages that that hold unchanging data. No matter who is using the website, the data will always be the same. We call this a static website. At the same time you've build various HTML pages so the user is able to access various parts of the website. We call this a multi-page application (MPA)

In the Node.js module you've learned about how to change the content of the page, based on the user's input, using a templating engine. Type in a keyword and the server sends back a template with customized data. We call this a dynamic website. However, we did it in such a way were we still had to send different pages to the client depending on the URL (for example, / or /users). This is also an MPA.

In this module, however, you'll learn how to make more complex websites. Though, we won't be calling them websites anymore: they'll be web applications. They're not just informational, but allow the user to interact with it. This similar to any application on your desktop. These React applications will also deal with dynamic data: its state changes depending on who's using it.

Besides being dynamic, React applications also are single page applications (SPA). Essentially, this means that on loading the whole application (every page and its contents) is accessible to the user, without the need to send requests to the server to get another page.

Before you start

In order to properly work through this module smoothly we're going to use software that will allow us to write React applications with ease. It's called create-react-app.

Go to your command line and execute the following:

npm install -g create-react-app

Now verify that you have it by executing the following:

create-react-app --version

It should be at least version 2.1.x.

Learning goals

In order to successfully complete this module you will need to master the following:

  • Understand the React way of thinking about user interfaces
  • Know the importance and place of state and how to pass it down
  • Be able to work with different hooks and even create your own
  • Recognize the utility of modularization
  • Putting emphasis on writing reusable code (components)
  • How to handle client-side routing

How to use this repository

Repository content

This repository consists of 3 essential parts:

  1. README: this document contains all the required theory you need to understand while working on the homework. It contains not only the right resources to learn about the concepts, but also lectures done by HackYourFuture teachers. This is the first thing you should start with every week
  2. MAKEME: this document contains the instructions for each week's homework. Start with the exercises rather quickly, so that you can ground the concepts you read about earlier.
  3. LESSONPLAN: this document is meant for teachers as a reference. However, as a student don't be shy to take a look at it as well!

How to study

Let's say you are just starting out with the Databases module. This is what you do...

  1. The week always starts on Wednesday. First thing you'll do is open the README.md for that week. For the first week of Databases, that would be Week1 Reading
  2. You spend Wednesday and Thursday going over the resources and try to get a basic understanding of the concepts. In the meanwhile, you'll also implement any feedback you got on last week's homework (from the Node.js module)
  3. On Friday you start with the homework, found in the MAKEME.md. For the first week of React, that would be Week1 Homework
  4. You spend Friday and Saturday playing around with the exercises and write down any questions you might have
  5. DEADLINE 1: You'll submit any questions you might have before Saturday 23.59, in the class channel
  6. On Sunday you'll attend class. It'll be of the Q&A format, meaning that there will be no new material. Instead your questions shall be discussed and you can learn from others
  7. You spend Monday and Tuesday finalizing your homework
  8. DEADLINE 2: You submit your homework to the right channels (GitHub) before Tuesday 23.59. If you can't make it on time, please communicate it with your mentor
  9. Start the new week by going back to point 1!

In summary:

Weekflow

To have a more detailed overview of the guidelines, please read this document or ask your mentor/class on Slack!

Planning

WeekTopicsReading MaterialsHomework
1.What is React, JSX, State & Props, Deploy a static siteReadings W1Homework W1
2.API calls, TestingReadings W2Homework W2
3.Client-side routing, Context, Custom hooksReadings W3Homework W3
4.Project!Readings W4

Finished?

Did you finish the module? Impressive!

If you feel ready for the final challenge, click here to go to Project!

The HackYourFuture curriculum is subject to CC BY copyright. This means you can freely use our materials, but just make sure to give us credit for it :)

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.

About

This repository contains all the material for the HackYourFuture module "React.js: Building dynamic UIs with modern JavaScript"

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

If you are following the HackYourFuture curriculum we recommend you to start with module 1: HTML/CSS/GIT. To get a complete overview of the HackYourFuture curriculum first, click here.

Please help us improve and share your feedback! If you find better tutorials or links, please share them by opening a pull request.

Introduction to React

  • React is JavaScript Library for building User Interfaces which mainly invovles building single-page applications. The biggest advantage with React is we can create reusable UI Components. It is Maintained by Meta and a Community of individual developers and companies. React can also be used to develop single page, mobile and server-rendered applications with frameworks like Nextjs.
  • Component Based coding. React Builds encapsulated components that manage their own state, then compose them to make complex UIs. Since the component logic is written in JavaScript instead of templates, we can easily pass rich data through the app and keep state out of the DOM.
  • Learn Once, Write Anywhere. We dont make assumptions about the rest of our technology stack, so you can develop new features in React without rewriting existing code. We can also render on the server using Node and Power Mobile apps using React Native.
  • Declarative, React makes it painless to create interactive UIs. Design simple views for each state in your application, and React will efficiently update and render just the right components when your data changes.
  • ReactJS is the most widely used JS Library for developing various web Application.

Module #7 - React.js: Building dynamic UIs with modern JavaScript (Frontend)

React Module

Welcome to the React module! Congratulations on making it this far!

In these 4 weeks we will go back to the frontend and learn how to make faster, more modern user interfaces. In the HTML and JavaScript modules you've learned all about creating webpages that that hold unchanging data. No matter who is using the website, the data will always be the same. We call this a static website. At the same time you've build various HTML pages so the user is able to access various parts of the website. We call this a multi-page application (MPA)

In the Node.js module you've learned about how to change the content of the page, based on the user's input, using a templating engine. Type in a keyword and the server sends back a template with customized data. We call this a dynamic website. However, we did it in such a way were we still had to send different pages to the client depending on the URL (for example, / or /users). This is also an MPA.

In this module, however, you'll learn how to make more complex websites. Though, we won't be calling them websites anymore: they'll be web applications. They're not just informational, but allow the user to interact with it. This similar to any application on your desktop. These React applications will also deal with dynamic data: its state changes depending on who's using it.

Besides being dynamic, React applications also are single page applications (SPA). Essentially, this means that on loading the whole application (every page and its contents) is accessible to the user, without the need to send requests to the server to get another page.

Before you start

In order to properly work through this module smoothly we're going to use software that will allow us to write React applications with ease. It's called create-react-app.

Go to your command line and execute the following:

npm install -g create-react-app

Now verify that you have it by executing the following:

create-react-app --version

It should be at least version 2.1.x.

Learning goals

In order to successfully complete this module you will need to master the following:

  • Understand the React way of thinking about user interfaces
  • Know the importance and place of state and how to pass it down
  • Be able to work with different hooks and even create your own
  • Recognize the utility of modularization
  • Putting emphasis on writing reusable code (components)
  • How to handle client-side routing

How to use this repository

Repository content

This repository consists of 3 essential parts:

  1. README: this document contains all the required theory you need to understand while working on the homework. It contains not only the right resources to learn about the concepts, but also lectures done by HackYourFuture teachers. This is the first thing you should start with every week
  2. MAKEME: this document contains the instructions for each week's homework. Start with the exercises rather quickly, so that you can ground the concepts you read about earlier.
  3. LESSONPLAN: this document is meant for teachers as a reference. However, as a student don't be shy to take a look at it as well!

How to study

Let's say you are just starting out with the Databases module. This is what you do...

  1. The week always starts on Wednesday. First thing you'll do is open the README.md for that week. For the first week of Databases, that would be Week1 Reading
  2. You spend Wednesday and Thursday going over the resources and try to get a basic understanding of the concepts. In the meanwhile, you'll also implement any feedback you got on last week's homework (from the Node.js module)
  3. On Friday you start with the homework, found in the MAKEME.md. For the first week of React, that would be Week1 Homework
  4. You spend Friday and Saturday playing around with the exercises and write down any questions you might have
  5. DEADLINE 1: You'll submit any questions you might have before Saturday 23.59, in the class channel
  6. On Sunday you'll attend class. It'll be of the Q&A format, meaning that there will be no new material. Instead your questions shall be discussed and you can learn from others
  7. You spend Monday and Tuesday finalizing your homework
  8. DEADLINE 2: You submit your homework to the right channels (GitHub) before Tuesday 23.59. If you can't make it on time, please communicate it with your mentor
  9. Start the new week by going back to point 1!

In summary:

Weekflow

To have a more detailed overview of the guidelines, please read this document or ask your mentor/class on Slack!

Planning

WeekTopicsReading MaterialsHomework
1.What is React, JSX, State & Props, Deploy a static siteReadings W1Homework W1
2.API calls, TestingReadings W2Homework W2
3.Client-side routing, Context, Custom hooksReadings W3Homework W3
4.Project!Readings W4

Finished?

Did you finish the module? Impressive!

If you feel ready for the final challenge, click here to go to Project!

The HackYourFuture curriculum is subject to CC BY copyright. This means you can freely use our materials, but just make sure to give us credit for it :)

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.

About

This repository contains all the material for the HackYourFuture module "React.js: Building dynamic UIs with modern JavaScript"

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

If you are following the HackYourFuture curriculum we recommend you to start with module 1: HTML/CSS/GIT. To get a complete overview of the HackYourFuture curriculum first, click here.

Please help us improve and share your feedback! If you find better tutorials or links, please share them by opening a pull request.

Introduction to React

  • React is JavaScript Library for building User Interfaces which mainly invovles building single-page applications. The biggest advantage with React is we can create reusable UI Components. It is Maintained by Meta and a Community of individual developers and companies. React can also be used to develop single page, mobile and server-rendered applications with frameworks like Nextjs.
  • Component Based coding. React Builds encapsulated components that manage their own state, then compose them to make complex UIs. Since the component logic is written in JavaScript instead of templates, we can easily pass rich data through the app and keep state out of the DOM.
  • Learn Once, Write Anywhere. We dont make assumptions about the rest of our technology stack, so you can develop new features in React without rewriting existing code. We can also render on the server using Node and Power Mobile apps using React Native.
  • Declarative, React makes it painless to create interactive UIs. Design simple views for each state in your application, and React will efficiently update and render just the right components when your data changes.
  • ReactJS is the most widely used JS Library for developing various web Application.

Module #7 - React.js: Building dynamic UIs with modern JavaScript (Frontend)

React Module

Welcome to the React module! Congratulations on making it this far!

In these 4 weeks we will go back to the frontend and learn how to make faster, more modern user interfaces. In the HTML and JavaScript modules you've learned all about creating webpages that that hold unchanging data. No matter who is using the website, the data will always be the same. We call this a static website. At the same time you've build various HTML pages so the user is able to access various parts of the website. We call this a multi-page application (MPA)

In the Node.js module you've learned about how to change the content of the page, based on the user's input, using a templating engine. Type in a keyword and the server sends back a template with customized data. We call this a dynamic website. However, we did it in such a way were we still had to send different pages to the client depending on the URL (for example, / or /users). This is also an MPA.

In this module, however, you'll learn how to make more complex websites. Though, we won't be calling them websites anymore: they'll be web applications. They're not just informational, but allow the user to interact with it. This similar to any application on your desktop. These React applications will also deal with dynamic data: its state changes depending on who's using it.

Besides being dynamic, React applications also are single page applications (SPA). Essentially, this means that on loading the whole application (every page and its contents) is accessible to the user, without the need to send requests to the server to get another page.

Before you start

In order to properly work through this module smoothly we're going to use software that will allow us to write React applications with ease. It's called create-react-app.

Go to your command line and execute the following:

npm install -g create-react-app

Now verify that you have it by executing the following:

create-react-app --version

It should be at least version 2.1.x.

Learning goals

In order to successfully complete this module you will need to master the following:

  • Understand the React way of thinking about user interfaces
  • Know the importance and place of state and how to pass it down
  • Be able to work with different hooks and even create your own
  • Recognize the utility of modularization
  • Putting emphasis on writing reusable code (components)
  • How to handle client-side routing

How to use this repository

Repository content

This repository consists of 3 essential parts:

  1. README: this document contains all the required theory you need to understand while working on the homework. It contains not only the right resources to learn about the concepts, but also lectures done by HackYourFuture teachers. This is the first thing you should start with every week
  2. MAKEME: this document contains the instructions for each week's homework. Start with the exercises rather quickly, so that you can ground the concepts you read about earlier.
  3. LESSONPLAN: this document is meant for teachers as a reference. However, as a student don't be shy to take a look at it as well!

How to study

Let's say you are just starting out with the Databases module. This is what you do...

  1. The week always starts on Wednesday. First thing you'll do is open the README.md for that week. For the first week of Databases, that would be Week1 Reading
  2. You spend Wednesday and Thursday going over the resources and try to get a basic understanding of the concepts. In the meanwhile, you'll also implement any feedback you got on last week's homework (from the Node.js module)
  3. On Friday you start with the homework, found in the MAKEME.md. For the first week of React, that would be Week1 Homework
  4. You spend Friday and Saturday playing around with the exercises and write down any questions you might have
  5. DEADLINE 1: You'll submit any questions you might have before Saturday 23.59, in the class channel
  6. On Sunday you'll attend class. It'll be of the Q&A format, meaning that there will be no new material. Instead your questions shall be discussed and you can learn from others
  7. You spend Monday and Tuesday finalizing your homework
  8. DEADLINE 2: You submit your homework to the right channels (GitHub) before Tuesday 23.59. If you can't make it on time, please communicate it with your mentor
  9. Start the new week by going back to point 1!

In summary:

Weekflow

To have a more detailed overview of the guidelines, please read this document or ask your mentor/class on Slack!

Planning

WeekTopicsReading MaterialsHomework
1.What is React, JSX, State & Props, Deploy a static siteReadings W1Homework W1
2.API calls, TestingReadings W2Homework W2
3.Client-side routing, Context, Custom hooksReadings W3Homework W3
4.Project!Readings W4

Finished?

Did you finish the module? Impressive!

If you feel ready for the final challenge, click here to go to Project!

The HackYourFuture curriculum is subject to CC BY copyright. This means you can freely use our materials, but just make sure to give us credit for it :)

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.

About

This repository contains all the material for the HackYourFuture module "React.js: Building dynamic UIs with modern JavaScript"

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

If you are following the HackYourFuture curriculum we recommend you to start with module 1: HTML/CSS/GIT. To get a complete overview of the HackYourFuture curriculum first, click here.

Please help us improve and share your feedback! If you find better tutorials or links, please share them by opening a pull request.

Introduction to React

  • React is JavaScript Library for building User Interfaces which mainly invovles building single-page applications. The biggest advantage with React is we can create reusable UI Components. It is Maintained by Meta and a Community of individual developers and companies. React can also be used to develop single page, mobile and server-rendered applications with frameworks like Nextjs.
  • Component Based coding. React Builds encapsulated components that manage their own state, then compose them to make complex UIs. Since the component logic is written in JavaScript instead of templates, we can easily pass rich data through the app and keep state out of the DOM.
  • Learn Once, Write Anywhere. We dont make assumptions about the rest of our technology stack, so you can develop new features in React without rewriting existing code. We can also render on the server using Node and Power Mobile apps using React Native.
  • Declarative, React makes it painless to create interactive UIs. Design simple views for each state in your application, and React will efficiently update and render just the right components when your data changes.
  • ReactJS is the most widely used JS Library for developing various web Application.

Module #7 - React.js: Building dynamic UIs with modern JavaScript (Frontend)

React Module

Welcome to the React module! Congratulations on making it this far!

In these 4 weeks we will go back to the frontend and learn how to make faster, more modern user interfaces. In the HTML and JavaScript modules you've learned all about creating webpages that that hold unchanging data. No matter who is using the website, the data will always be the same. We call this a static website. At the same time you've build various HTML pages so the user is able to access various parts of the website. We call this a multi-page application (MPA)

In the Node.js module you've learned about how to change the content of the page, based on the user's input, using a templating engine. Type in a keyword and the server sends back a template with customized data. We call this a dynamic website. However, we did it in such a way were we still had to send different pages to the client depending on the URL (for example, / or /users). This is also an MPA.

In this module, however, you'll learn how to make more complex websites. Though, we won't be calling them websites anymore: they'll be web applications. They're not just informational, but allow the user to interact with it. This similar to any application on your desktop. These React applications will also deal with dynamic data: its state changes depending on who's using it.

Besides being dynamic, React applications also are single page applications (SPA). Essentially, this means that on loading the whole application (every page and its contents) is accessible to the user, without the need to send requests to the server to get another page.

Before you start

In order to properly work through this module smoothly we're going to use software that will allow us to write React applications with ease. It's called create-react-app.

Go to your command line and execute the following:

npm install -g create-react-app

Now verify that you have it by executing the following:

create-react-app --version

It should be at least version 2.1.x.

Learning goals

In order to successfully complete this module you will need to master the following:

  • Understand the React way of thinking about user interfaces
  • Know the importance and place of state and how to pass it down
  • Be able to work with different hooks and even create your own
  • Recognize the utility of modularization
  • Putting emphasis on writing reusable code (components)
  • How to handle client-side routing

How to use this repository

Repository content

This repository consists of 3 essential parts:

  1. README: this document contains all the required theory you need to understand while working on the homework. It contains not only the right resources to learn about the concepts, but also lectures done by HackYourFuture teachers. This is the first thing you should start with every week
  2. MAKEME: this document contains the instructions for each week's homework. Start with the exercises rather quickly, so that you can ground the concepts you read about earlier.
  3. LESSONPLAN: this document is meant for teachers as a reference. However, as a student don't be shy to take a look at it as well!

How to study

Let's say you are just starting out with the Databases module. This is what you do...

  1. The week always starts on Wednesday. First thing you'll do is open the README.md for that week. For the first week of Databases, that would be Week1 Reading
  2. You spend Wednesday and Thursday going over the resources and try to get a basic understanding of the concepts. In the meanwhile, you'll also implement any feedback you got on last week's homework (from the Node.js module)
  3. On Friday you start with the homework, found in the MAKEME.md. For the first week of React, that would be Week1 Homework
  4. You spend Friday and Saturday playing around with the exercises and write down any questions you might have
  5. DEADLINE 1: You'll submit any questions you might have before Saturday 23.59, in the class channel
  6. On Sunday you'll attend class. It'll be of the Q&A format, meaning that there will be no new material. Instead your questions shall be discussed and you can learn from others
  7. You spend Monday and Tuesday finalizing your homework
  8. DEADLINE 2: You submit your homework to the right channels (GitHub) before Tuesday 23.59. If you can't make it on time, please communicate it with your mentor
  9. Start the new week by going back to point 1!

In summary:

Weekflow

To have a more detailed overview of the guidelines, please read this document or ask your mentor/class on Slack!

Planning

WeekTopicsReading MaterialsHomework
1.What is React, JSX, State & Props, Deploy a static siteReadings W1Homework W1
2.API calls, TestingReadings W2Homework W2
3.Client-side routing, Context, Custom hooksReadings W3Homework W3
4.Project!Readings W4

Finished?

Did you finish the module? Impressive!

If you feel ready for the final challenge, click here to go to Project!

The HackYourFuture curriculum is subject to CC BY copyright. This means you can freely use our materials, but just make sure to give us credit for it :)

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.

About

This repository contains all the material for the HackYourFuture module "React.js: Building dynamic UIs with modern JavaScript"

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

If you are following the HackYourFuture curriculum we recommend you to start with module 1: HTML/CSS/GIT. To get a complete overview of the HackYourFuture curriculum first, click here.

Please help us improve and share your feedback! If you find better tutorials or links, please share them by opening a pull request.

Introduction to React

  • React is JavaScript Library for building User Interfaces which mainly invovles building single-page applications. The biggest advantage with React is we can create reusable UI Components. It is Maintained by Meta and a Community of individual developers and companies. React can also be used to develop single page, mobile and server-rendered applications with frameworks like Nextjs.
  • Component Based coding. React Builds encapsulated components that manage their own state, then compose them to make complex UIs. Since the component logic is written in JavaScript instead of templates, we can easily pass rich data through the app and keep state out of the DOM.
  • Learn Once, Write Anywhere. We dont make assumptions about the rest of our technology stack, so you can develop new features in React without rewriting existing code. We can also render on the server using Node and Power Mobile apps using React Native.
  • Declarative, React makes it painless to create interactive UIs. Design simple views for each state in your application, and React will efficiently update and render just the right components when your data changes.
  • ReactJS is the most widely used JS Library for developing various web Application.

Module #7 - React.js: Building dynamic UIs with modern JavaScript (Frontend)

React Module

Welcome to the React module! Congratulations on making it this far!

In these 4 weeks we will go back to the frontend and learn how to make faster, more modern user interfaces. In the HTML and JavaScript modules you've learned all about creating webpages that that hold unchanging data. No matter who is using the website, the data will always be the same. We call this a static website. At the same time you've build various HTML pages so the user is able to access various parts of the website. We call this a multi-page application (MPA)

In the Node.js module you've learned about how to change the content of the page, based on the user's input, using a templating engine. Type in a keyword and the server sends back a template with customized data. We call this a dynamic website. However, we did it in such a way were we still had to send different pages to the client depending on the URL (for example, / or /users). This is also an MPA.

In this module, however, you'll learn how to make more complex websites. Though, we won't be calling them websites anymore: they'll be web applications. They're not just informational, but allow the user to interact with it. This similar to any application on your desktop. These React applications will also deal with dynamic data: its state changes depending on who's using it.

Besides being dynamic, React applications also are single page applications (SPA). Essentially, this means that on loading the whole application (every page and its contents) is accessible to the user, without the need to send requests to the server to get another page.

Before you start

In order to properly work through this module smoothly we're going to use software that will allow us to write React applications with ease. It's called create-react-app.

Go to your command line and execute the following:

npm install -g create-react-app

Now verify that you have it by executing the following:

create-react-app --version

It should be at least version 2.1.x.

Learning goals

In order to successfully complete this module you will need to master the following:

  • Understand the React way of thinking about user interfaces
  • Know the importance and place of state and how to pass it down
  • Be able to work with different hooks and even create your own
  • Recognize the utility of modularization
  • Putting emphasis on writing reusable code (components)
  • How to handle client-side routing

How to use this repository

Repository content

This repository consists of 3 essential parts:

  1. README: this document contains all the required theory you need to understand while working on the homework. It contains not only the right resources to learn about the concepts, but also lectures done by HackYourFuture teachers. This is the first thing you should start with every week
  2. MAKEME: this document contains the instructions for each week's homework. Start with the exercises rather quickly, so that you can ground the concepts you read about earlier.
  3. LESSONPLAN: this document is meant for teachers as a reference. However, as a student don't be shy to take a look at it as well!

How to study

Let's say you are just starting out with the Databases module. This is what you do...

  1. The week always starts on Wednesday. First thing you'll do is open the README.md for that week. For the first week of Databases, that would be Week1 Reading
  2. You spend Wednesday and Thursday going over the resources and try to get a basic understanding of the concepts. In the meanwhile, you'll also implement any feedback you got on last week's homework (from the Node.js module)
  3. On Friday you start with the homework, found in the MAKEME.md. For the first week of React, that would be Week1 Homework
  4. You spend Friday and Saturday playing around with the exercises and write down any questions you might have
  5. DEADLINE 1: You'll submit any questions you might have before Saturday 23.59, in the class channel
  6. On Sunday you'll attend class. It'll be of the Q&A format, meaning that there will be no new material. Instead your questions shall be discussed and you can learn from others
  7. You spend Monday and Tuesday finalizing your homework
  8. DEADLINE 2: You submit your homework to the right channels (GitHub) before Tuesday 23.59. If you can't make it on time, please communicate it with your mentor
  9. Start the new week by going back to point 1!

In summary:

Weekflow

To have a more detailed overview of the guidelines, please read this document or ask your mentor/class on Slack!

Planning

WeekTopicsReading MaterialsHomework
1.What is React, JSX, State & Props, Deploy a static siteReadings W1Homework W1
2.API calls, TestingReadings W2Homework W2
3.Client-side routing, Context, Custom hooksReadings W3Homework W3
4.Project!Readings W4

Finished?

Did you finish the module? Impressive!

If you feel ready for the final challenge, click here to go to Project!

The HackYourFuture curriculum is subject to CC BY copyright. This means you can freely use our materials, but just make sure to give us credit for it :)

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.

About

This repository contains all the material for the HackYourFuture module "React.js: Building dynamic UIs with modern JavaScript"

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

If you are following the HackYourFuture curriculum we recommend you to start with module 1: HTML/CSS/GIT. To get a complete overview of the HackYourFuture curriculum first, click here.

Please help us improve and share your feedback! If you find better tutorials or links, please share them by opening a pull request.

Introduction to React

  • React is JavaScript Library for building User Interfaces which mainly invovles building single-page applications. The biggest advantage with React is we can create reusable UI Components. It is Maintained by Meta and a Community of individual developers and companies. React can also be used to develop single page, mobile and server-rendered applications with frameworks like Nextjs.
  • Component Based coding. React Builds encapsulated components that manage their own state, then compose them to make complex UIs. Since the component logic is written in JavaScript instead of templates, we can easily pass rich data through the app and keep state out of the DOM.
  • Learn Once, Write Anywhere. We dont make assumptions about the rest of our technology stack, so you can develop new features in React without rewriting existing code. We can also render on the server using Node and Power Mobile apps using React Native.
  • Declarative, React makes it painless to create interactive UIs. Design simple views for each state in your application, and React will efficiently update and render just the right components when your data changes.
  • ReactJS is the most widely used JS Library for developing various web Application.

Module #7 - React.js: Building dynamic UIs with modern JavaScript (Frontend)

React Module

Welcome to the React module! Congratulations on making it this far!

In these 4 weeks we will go back to the frontend and learn how to make faster, more modern user interfaces. In the HTML and JavaScript modules you've learned all about creating webpages that that hold unchanging data. No matter who is using the website, the data will always be the same. We call this a static website. At the same time you've build various HTML pages so the user is able to access various parts of the website. We call this a multi-page application (MPA)

In the Node.js module you've learned about how to change the content of the page, based on the user's input, using a templating engine. Type in a keyword and the server sends back a template with customized data. We call this a dynamic website. However, we did it in such a way were we still had to send different pages to the client depending on the URL (for example, / or /users). This is also an MPA.

In this module, however, you'll learn how to make more complex websites. Though, we won't be calling them websites anymore: they'll be web applications. They're not just informational, but allow the user to interact with it. This similar to any application on your desktop. These React applications will also deal with dynamic data: its state changes depending on who's using it.

Besides being dynamic, React applications also are single page applications (SPA). Essentially, this means that on loading the whole application (every page and its contents) is accessible to the user, without the need to send requests to the server to get another page.

Before you start

In order to properly work through this module smoothly we're going to use software that will allow us to write React applications with ease. It's called create-react-app.

Go to your command line and execute the following:

npm install -g create-react-app

Now verify that you have it by executing the following:

create-react-app --version

It should be at least version 2.1.x.

Learning goals

In order to successfully complete this module you will need to master the following:

  • Understand the React way of thinking about user interfaces
  • Know the importance and place of state and how to pass it down
  • Be able to work with different hooks and even create your own
  • Recognize the utility of modularization
  • Putting emphasis on writing reusable code (components)
  • How to handle client-side routing

How to use this repository

Repository content

This repository consists of 3 essential parts:

  1. README: this document contains all the required theory you need to understand while working on the homework. It contains not only the right resources to learn about the concepts, but also lectures done by HackYourFuture teachers. This is the first thing you should start with every week
  2. MAKEME: this document contains the instructions for each week's homework. Start with the exercises rather quickly, so that you can ground the concepts you read about earlier.
  3. LESSONPLAN: this document is meant for teachers as a reference. However, as a student don't be shy to take a look at it as well!

How to study

Let's say you are just starting out with the Databases module. This is what you do...

  1. The week always starts on Wednesday. First thing you'll do is open the README.md for that week. For the first week of Databases, that would be Week1 Reading
  2. You spend Wednesday and Thursday going over the resources and try to get a basic understanding of the concepts. In the meanwhile, you'll also implement any feedback you got on last week's homework (from the Node.js module)
  3. On Friday you start with the homework, found in the MAKEME.md. For the first week of React, that would be Week1 Homework
  4. You spend Friday and Saturday playing around with the exercises and write down any questions you might have
  5. DEADLINE 1: You'll submit any questions you might have before Saturday 23.59, in the class channel
  6. On Sunday you'll attend class. It'll be of the Q&A format, meaning that there will be no new material. Instead your questions shall be discussed and you can learn from others
  7. You spend Monday and Tuesday finalizing your homework
  8. DEADLINE 2: You submit your homework to the right channels (GitHub) before Tuesday 23.59. If you can't make it on time, please communicate it with your mentor
  9. Start the new week by going back to point 1!

In summary:

Weekflow

To have a more detailed overview of the guidelines, please read this document or ask your mentor/class on Slack!

Planning

WeekTopicsReading MaterialsHomework
1.What is React, JSX, State & Props, Deploy a static siteReadings W1Homework W1
2.API calls, TestingReadings W2Homework W2
3.Client-side routing, Context, Custom hooksReadings W3Homework W3
4.Project!Readings W4

Finished?

Did you finish the module? Impressive!

If you feel ready for the final challenge, click here to go to Project!

The HackYourFuture curriculum is subject to CC BY copyright. This means you can freely use our materials, but just make sure to give us credit for it :)

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.

About

This repository contains all the material for the HackYourFuture module "React.js: Building dynamic UIs with modern JavaScript"

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

If you are following the HackYourFuture curriculum we recommend you to start with module 1: HTML/CSS/GIT. To get a complete overview of the HackYourFuture curriculum first, click here.

Please help us improve and share your feedback! If you find better tutorials or links, please share them by opening a pull request.

Introduction to React

  • React is JavaScript Library for building User Interfaces which mainly invovles building single-page applications. The biggest advantage with React is we can create reusable UI Components. It is Maintained by Meta and a Community of individual developers and companies. React can also be used to develop single page, mobile and server-rendered applications with frameworks like Nextjs.
  • Component Based coding. React Builds encapsulated components that manage their own state, then compose them to make complex UIs. Since the component logic is written in JavaScript instead of templates, we can easily pass rich data through the app and keep state out of the DOM.
  • Learn Once, Write Anywhere. We dont make assumptions about the rest of our technology stack, so you can develop new features in React without rewriting existing code. We can also render on the server using Node and Power Mobile apps using React Native.
  • Declarative, React makes it painless to create interactive UIs. Design simple views for each state in your application, and React will efficiently update and render just the right components when your data changes.
  • ReactJS is the most widely used JS Library for developing various web Application.

Module #7 - React.js: Building dynamic UIs with modern JavaScript (Frontend)

React Module

Welcome to the React module! Congratulations on making it this far!

In these 4 weeks we will go back to the frontend and learn how to make faster, more modern user interfaces. In the HTML and JavaScript modules you've learned all about creating webpages that that hold unchanging data. No matter who is using the website, the data will always be the same. We call this a static website. At the same time you've build various HTML pages so the user is able to access various parts of the website. We call this a multi-page application (MPA)

In the Node.js module you've learned about how to change the content of the page, based on the user's input, using a templating engine. Type in a keyword and the server sends back a template with customized data. We call this a dynamic website. However, we did it in such a way were we still had to send different pages to the client depending on the URL (for example, / or /users). This is also an MPA.

In this module, however, you'll learn how to make more complex websites. Though, we won't be calling them websites anymore: they'll be web applications. They're not just informational, but allow the user to interact with it. This similar to any application on your desktop. These React applications will also deal with dynamic data: its state changes depending on who's using it.

Besides being dynamic, React applications also are single page applications (SPA). Essentially, this means that on loading the whole application (every page and its contents) is accessible to the user, without the need to send requests to the server to get another page.

Before you start

In order to properly work through this module smoothly we're going to use software that will allow us to write React applications with ease. It's called create-react-app.

Go to your command line and execute the following:

npm install -g create-react-app

Now verify that you have it by executing the following:

create-react-app --version

It should be at least version 2.1.x.

Learning goals

In order to successfully complete this module you will need to master the following:

  • Understand the React way of thinking about user interfaces
  • Know the importance and place of state and how to pass it down
  • Be able to work with different hooks and even create your own
  • Recognize the utility of modularization
  • Putting emphasis on writing reusable code (components)
  • How to handle client-side routing

How to use this repository

Repository content

This repository consists of 3 essential parts:

  1. README: this document contains all the required theory you need to understand while working on the homework. It contains not only the right resources to learn about the concepts, but also lectures done by HackYourFuture teachers. This is the first thing you should start with every week
  2. MAKEME: this document contains the instructions for each week's homework. Start with the exercises rather quickly, so that you can ground the concepts you read about earlier.
  3. LESSONPLAN: this document is meant for teachers as a reference. However, as a student don't be shy to take a look at it as well!

How to study

Let's say you are just starting out with the Databases module. This is what you do...

  1. The week always starts on Wednesday. First thing you'll do is open the README.md for that week. For the first week of Databases, that would be Week1 Reading
  2. You spend Wednesday and Thursday going over the resources and try to get a basic understanding of the concepts. In the meanwhile, you'll also implement any feedback you got on last week's homework (from the Node.js module)
  3. On Friday you start with the homework, found in the MAKEME.md. For the first week of React, that would be Week1 Homework
  4. You spend Friday and Saturday playing around with the exercises and write down any questions you might have
  5. DEADLINE 1: You'll submit any questions you might have before Saturday 23.59, in the class channel
  6. On Sunday you'll attend class. It'll be of the Q&A format, meaning that there will be no new material. Instead your questions shall be discussed and you can learn from others
  7. You spend Monday and Tuesday finalizing your homework
  8. DEADLINE 2: You submit your homework to the right channels (GitHub) before Tuesday 23.59. If you can't make it on time, please communicate it with your mentor
  9. Start the new week by going back to point 1!

In summary:

Weekflow

To have a more detailed overview of the guidelines, please read this document or ask your mentor/class on Slack!

Planning

WeekTopicsReading MaterialsHomework
1.What is React, JSX, State & Props, Deploy a static siteReadings W1Homework W1
2.API calls, TestingReadings W2Homework W2
3.Client-side routing, Context, Custom hooksReadings W3Homework W3
4.Project!Readings W4

Finished?

Did you finish the module? Impressive!

If you feel ready for the final challenge, click here to go to Project!

The HackYourFuture curriculum is subject to CC BY copyright. This means you can freely use our materials, but just make sure to give us credit for it :)

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.

About

This repository contains all the material for the HackYourFuture module "React.js: Building dynamic UIs with modern JavaScript"

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

If you are following the HackYourFuture curriculum we recommend you to start with module 1: HTML/CSS/GIT. To get a complete overview of the HackYourFuture curriculum first, click here.

Please help us improve and share your feedback! If you find better tutorials or links, please share them by opening a pull request.

Introduction to React

  • React is JavaScript Library for building User Interfaces which mainly invovles building single-page applications. The biggest advantage with React is we can create reusable UI Components. It is Maintained by Meta and a Community of individual developers and companies. React can also be used to develop single page, mobile and server-rendered applications with frameworks like Nextjs.
  • Component Based coding. React Builds encapsulated components that manage their own state, then compose them to make complex UIs. Since the component logic is written in JavaScript instead of templates, we can easily pass rich data through the app and keep state out of the DOM.
  • Learn Once, Write Anywhere. We dont make assumptions about the rest of our technology stack, so you can develop new features in React without rewriting existing code. We can also render on the server using Node and Power Mobile apps using React Native.
  • Declarative, React makes it painless to create interactive UIs. Design simple views for each state in your application, and React will efficiently update and render just the right components when your data changes.
  • ReactJS is the most widely used JS Library for developing various web Application.

Module #7 - React.js: Building dynamic UIs with modern JavaScript (Frontend)

React Module

Welcome to the React module! Congratulations on making it this far!

In these 4 weeks we will go back to the frontend and learn how to make faster, more modern user interfaces. In the HTML and JavaScript modules you've learned all about creating webpages that that hold unchanging data. No matter who is using the website, the data will always be the same. We call this a static website. At the same time you've build various HTML pages so the user is able to access various parts of the website. We call this a multi-page application (MPA)

In the Node.js module you've learned about how to change the content of the page, based on the user's input, using a templating engine. Type in a keyword and the server sends back a template with customized data. We call this a dynamic website. However, we did it in such a way were we still had to send different pages to the client depending on the URL (for example, / or /users). This is also an MPA.

In this module, however, you'll learn how to make more complex websites. Though, we won't be calling them websites anymore: they'll be web applications. They're not just informational, but allow the user to interact with it. This similar to any application on your desktop. These React applications will also deal with dynamic data: its state changes depending on who's using it.

Besides being dynamic, React applications also are single page applications (SPA). Essentially, this means that on loading the whole application (every page and its contents) is accessible to the user, without the need to send requests to the server to get another page.

Before you start

In order to properly work through this module smoothly we're going to use software that will allow us to write React applications with ease. It's called create-react-app.

Go to your command line and execute the following:

npm install -g create-react-app

Now verify that you have it by executing the following:

create-react-app --version

It should be at least version 2.1.x.

Learning goals

In order to successfully complete this module you will need to master the following:

  • Understand the React way of thinking about user interfaces
  • Know the importance and place of state and how to pass it down
  • Be able to work with different hooks and even create your own
  • Recognize the utility of modularization
  • Putting emphasis on writing reusable code (components)
  • How to handle client-side routing

How to use this repository

Repository content

This repository consists of 3 essential parts:

  1. README: this document contains all the required theory you need to understand while working on the homework. It contains not only the right resources to learn about the concepts, but also lectures done by HackYourFuture teachers. This is the first thing you should start with every week
  2. MAKEME: this document contains the instructions for each week's homework. Start with the exercises rather quickly, so that you can ground the concepts you read about earlier.
  3. LESSONPLAN: this document is meant for teachers as a reference. However, as a student don't be shy to take a look at it as well!

How to study

Let's say you are just starting out with the Databases module. This is what you do...

  1. The week always starts on Wednesday. First thing you'll do is open the README.md for that week. For the first week of Databases, that would be Week1 Reading
  2. You spend Wednesday and Thursday going over the resources and try to get a basic understanding of the concepts. In the meanwhile, you'll also implement any feedback you got on last week's homework (from the Node.js module)
  3. On Friday you start with the homework, found in the MAKEME.md. For the first week of React, that would be Week1 Homework
  4. You spend Friday and Saturday playing around with the exercises and write down any questions you might have
  5. DEADLINE 1: You'll submit any questions you might have before Saturday 23.59, in the class channel
  6. On Sunday you'll attend class. It'll be of the Q&A format, meaning that there will be no new material. Instead your questions shall be discussed and you can learn from others
  7. You spend Monday and Tuesday finalizing your homework
  8. DEADLINE 2: You submit your homework to the right channels (GitHub) before Tuesday 23.59. If you can't make it on time, please communicate it with your mentor
  9. Start the new week by going back to point 1!

In summary:

Weekflow

To have a more detailed overview of the guidelines, please read this document or ask your mentor/class on Slack!

Planning

WeekTopicsReading MaterialsHomework
1.What is React, JSX, State & Props, Deploy a static siteReadings W1Homework W1
2.API calls, TestingReadings W2Homework W2
3.Client-side routing, Context, Custom hooksReadings W3Homework W3
4.Project!Readings W4

Finished?

Did you finish the module? Impressive!

If you feel ready for the final challenge, click here to go to Project!

The HackYourFuture curriculum is subject to CC BY copyright. This means you can freely use our materials, but just make sure to give us credit for it :)

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.

About

This repository contains all the material for the HackYourFuture module "React.js: Building dynamic UIs with modern JavaScript"

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages