Компоненты, возвращаемые из компонентов более высокого порядка, называются замыканиями? - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть компонент высшего порядка FormBuilder, например:

const FormBuilder = (WrappedComponent) => {
  const name = 'bob';

  return class HOC extends React.Component {
    render() {
      return (
        <div> 
          <WrappedComponent {...props} />
        </div>
      );
    }
  }
}

Я думаю, что компонент HOC, возвращаемый из этой функции, можно рассматривать как замыкание, потому что онимеет доступ к своим реквизитам (собственная область), переменной name и компоненту WrappedComponent (область действия внешней функции), а также ко всему, что определено в глобальной области.Кто-нибудь может проверить, правильно ли мое мышление?

1 Ответ

0 голосов
/ 24 декабря 2018

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

Разница: В случае закрытия у нас нет контроля над условным рендерингом.Если мы хотим визуализировать только дочерний компонент, мы можем легко сделать это в случае компонента более высокого порядка с помощью метода жизненного цикла ShouldComponentUpdate (), но мы не можем сделать это в замыкании.В случае закрытия function2, function3, function4 имеют доступ к переменной x

function1(){
  var x = 4;
    return function2(){
      return function3(){
      return function4(){
      }
      }
      }
      }

В случае компонента более высокого порядка у нас есть контроль над тем, какие данные отправлять в компонент более низкого уровня.Мы можем сделать x доступным для function1 и function2, отправив как реквизиты, но у нас есть возможность не отправлять в function3, а также в function4.Таким образом, мы можем иметь больше контроля в случае компонента более высокого порядка.Все компоненты будут иметь собственную копию переменной x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...