Before learning React, we should master HTML, CSS, and the following knowledge in Javascript (in addition to the initial knowledge such as variables, loops, conditions,...)
- Arrow Functions
- Ternary Operators
- Destructuring Assignment
- Map, Filter...
Arrow Functions
Arrow function is one of the cool features of ES6. Proper use of arrow functions makes the code shorter and easier to understand.
Arrow function is used quite a lot because it is succinct and does not use "this".
Example with a regular function:
function sum(a, b) {
return a + b;
}
Rewrite with arrow function:
const sum = (a, b) => a + b;
Ternary Operators
Ternary operator can help programmers quickly check a condition in javascript.
Syntax:
expression ? if true : if not true
Javascript ternary is used to shorten the statement when checking a condition. This is useful for quickly returning a value (it means assigning it to another variable).
Example:
const x = 50;
let result;
if (x < 100) {
result = "less than 100 ";
} else {
result = "greater than or equal to 100";
}
After shortening:
const x = 50;
const result = (x < 100) ? "less than 100" : "greater than or equal to 100";
Destructuring Assignment
Destructuring Assignment is a syntax that allows separating objects and arrays into variables, making the code more concise instead of declaring variables many times.
Destructuring Assignment with Array
Example:
let [firstName, lastName] = ["Neji", "Nguyen"];
Destructuring Assignment with Objects
Example:
let { firstName, lastName } = { firstName: "Neji", lastName: "Nguyen" };
A common example in ReactJs
// Not use Destructuring assignment
function MyComponent(props) {
let navigation = props.navigation;
let route = props.route;
...
}
// Use Destructuring assignment
function MyComponent({navigation, route}) {
...
}
Map, Filter, Reduce
To make it easier to visualize the map()
, filter()
and reduce()
functions, we will use a sample array as shown below:
const foods = [
{
"name": "noodle",
"type": "wet",
"price": 20000
},
{
"name": "rice",
"type": "dry",
"price": 25000
},
{
"name": "bread",
"type": "dry",
"price": 10000
},
{
"name": "soup",
"type": "wet",
"price": 5000
}
]
map() Function
For example, we need an array containing the names of foods. If using for-loop
:
let food_names = [];
for (let i = 0; i < foods.length; i++) {
food_names.push(foods[i].name);
}
If the map()
function is used, the code will be shortened as follows:
let food_names = foods.map((food, index, foods) => {
return food.name
})
filter() Function
Continuing with another example, this time we want an array containing only dry foods. If using for-loop
:
let dry_foods = [];
for (let i = 0; i < foods.length; i ++) {
if (foods[i].type === "dry") {
dry_foods.push(foods[i])
}
}
Use the filter()
function:
let dry_foods = foods.filter((food) => {
return food.type === "dry"
})
reduce() Function
Let's go to the 3rd example: we need to calculate the total price of the food. Let's start with the for-loop
:
let total_price = 0;
for (let i = 0; i < foods.length; i++) {
total_price += foods[i].price
}
Use the reduce()
function:
let total_price = foods.reduce((price, food, index, foods) => {
return price += food.price
}, 0)