Понимание функции двойного возврата в Javascript

Я хочу понять функцию двойного возврата в Javascript

Я рассмотрел другие вопросы, которые задавали в SF относительно заявления о возврате, но я не смог понять из него смысл.

Итак, я пытался понять HOC в реакции, когда наткнулся на статью о среде.

Автор написал эту строчку кода в своем примере.

const yell = (PassedComponent) =>
  ({ children, ...props }) =>
    <PassedComponent {...props}>
      {children.toUpperCase()}!
    </PassedComponent>

const Title = (props) => <h1>{props.children}</h1>

const AngryTitle = yell(Title)

<AngryTitle>Whatever</AngryTitle>

//=> <h1>WHATEVER!</h1>

Наш HOC (Yell) здесь также можно вернуть как

const yell = PassedComponent => ({children, ...props}) => {
    return (

Поскольку есть две стрелочные функции и что-то вроде этого после первой стрелочной функции ({children, ...props}), я думаю, что это функция двойного возврата HOC.

[Вопрос]: Может кто-нибудь объяснить мне двойной возврат или код выше ?.

Это не совсем двойная отдача. Это функция, которая возвращает другую функцию. Это будет от похожий(не совсем эквивалент) до function yell(...){ return function(...){ return ...; } }

blex 20.05.2018 12:43

@blex в любом случае, не могли бы вы подробно объяснить вышеупомянутый вопрос?

iRohitBhatia 20.05.2018 12:46
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
277
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

const foo = arg1 => arg2 => arg1 + ar2;

Это функция, которая возвращает другую функцию и аналогична следующей:

function foo(arg1){
   return function(arg2){
     return arg1 + arg2
   }    
}

Чтобы получить внутреннее возвращаемое значение, вам нужно сделать

foo(input1)(input2)

Или вариант, в котором вы сохраняете возвращенную функцию с начальным вводом и используете ее снова

var f1 = foo(input1)
console.info(f1(input2))
console.info(f1(input3))
Ответ принят как подходящий

Во-первых, чтобы было понятнее, давайте воспользуемся полным синтаксисом, используя фигурные скобки и операторы return:

const yell = (PassedComponent) => {
    return ({ children, ...props }) => {
        return (
            <PassedComponent {...props}>
                {children.toUpperCase()}!
            </PassedComponent>
        );
    };
}

Да, слово return используется дважды. Но здесь есть две функции. И у каждого есть только одно заявление return.

Внешний принимает компонент в качестве параметра и возвращает функцию. Эта функция теперь является компонентом (да, компоненты - это функции), который может быть создан с дочерними элементами и реквизитами.

Другие вопросы по теме