Некоторые заметки, которые я сделал во время изучения React — это без предварительного изучения JavaScript (JS). Итак, мы начинаем с некоторых основ JS. Это 2 часть из 3 или 4.

Часть 2 продолжается с того места, где мы остановились в части 1, которую можно увидеть здесь

Связывать

Поскольку JS — это ООП, функции — это объекты. Все есть объект! Используя метод bind, как показано ниже, мы можем установить значение this (ранее упомянутое в части 1) на постоянной основе.

Вызов bind для функции обхода даст нам новую функцию обхода. Значение this в этой функции walk будет основано на значении thisArg, которое мы указали в bind.

const walk = person.walk.bind(person)
walk();

С приведенным выше кодом вы увидите, что на выходе будут два одинаковых объекта. Один первый объект находится внутри нашей константы person в функции walk, а второй объект связан с тем, что мы создали привязку константы walk человекк нему.

Стрелочные функции

Создание функции в JS сильно упростилось. В примере у нас будет функция квадрата числа. Ниже приведен первоначальный способ создания и возврата значения функции. Это довольно легко понять.

const square = function(number) {
    return number * number;
}

Теперь мы можем значительно упростить приведенный выше код, используя «стрелочные функции».

const square = number => number * number;

Выше вы увидите точно такую ​​же функцию square, как и выше, только упрощенную до одной строки. Здесь есть несколько крутых трюков.

Если ваша функция принимает только один параметр, вам не нужны круглые скобки вокруг параметра, как показано в нашей упрощенной функции square .

Если тело вашей функции состоит только из одной строки и что-то возвращает — например, с нашей исходной функцией square, то мы можем фактически исключить 'return ' и эти фигурные скобки. Даем нам нашу красивую вторую функцию квадрат . Намного лучше!

Просто чтобы вы тоже знали — если вашей функции не нужны никакие параметры, вам просто нужно поставить несколько пустых скобок вместо параметра. Вот как это будет выглядеть в качестве примера.

const square = () => number * number;

Вернемся к нашей упрощенной функции. Его использование будет выглядеть примерно так.

const square = number => number * number;

console.log(square(5));

Возврат в консоли:

Вот отличный сценарий использования:

const jobs = [
    {id: 1, isActive: true},
    {id: 2, isActive: true},
    {id: 3, isActive: false},
];

const activeJobs = jobs.filter(job => job.isActive)

console.log(activeJobs)

Выше мы создали список из трех вакансий. Два из них активны, а один нет. Мы хотим вывести в консоль задания, которые активны. Итак, мы создали функцию activeJobs. При этом используется метод filter для выполнения перечисления по списку в jobs, и возвращаются только те задания, которые активны. Ниже то, что мы получаем обратно в консоли.

Деструктуризация объекта

Определение объекта address с несколькими значениями внутри него — позже в нашем коде мы можем захотеть извлечь значения из этого объекта address.

const address = {
    street: 'Hacker Way',
    city: 'San Francisco',
    country: 'United States of America',
};

const street = address.street;
const city = address.city;
const country = address.country;

Выше вы можете видеть, что нам пришлось использовать 3 строки, чтобы извлечь значения из нашего объекта address. Вместо этого — мы можем использовать деструктуризацию объекта.

const { street, city, country} = address;

console.log(street);
console.log(city);
console.log(country);

То, что вы видите выше, эквивалентно трем строкам, которые мы использовали, за исключением того, что это намного аккуратнее и представляет собой впечатляющий один лайнер! Ниже то, что будет напечатано в консоли

Если вы хотите получить доступ только к свойству city и, возможно, изменить имя свойства, вот как это сделать:

const { city: ci} = address;

console.log(ci);

Вывод в консоли как это:

Прекрасные вещи! На сегодня все дружище. Настройтесь снова, чтобы узнать больше и учиться вместе со мной! 🤙🏼

Любые комментарии, рекомендации, исправления или даже просто желание сказать, что случилось — все это можно сделать в комментариях :)