Как правильно написать HOC компонент на ReactJS?

Изучаю паттерны React, прохожу тему с HOC(компоненты высшего порядка).
Имеется код "Преподавателя" выглядит так:
spoiler
const with-BookStore-Service = () => (wraped) => {
  return (props) {
    return (
      <Consumer>
        {
          (value) => {
            return (
              <Wraped {...props}
            )
          }
        }
      <Consumer>
    )
  }


Почему мы передаем наш "главный" компонент во вторую функцию
with-BookStore-Service = () => (wraped) =>


Можно сделать короче:
spoiler

const withTest = (wraped) => (props) => {
 return (
      <Consumer>
        {
          (value) => {
            return (
              <Wraped {...props}>
            )
          }
        }
      <Consumer>
)
}


Чем же мой код хуже?
Все работает и компоненты хорошо оборачиваются, мой компонент HOC выполняет свою задачу на ура.
  • Вопрос задан
  • 170 просмотров
Решения вопроса 1
Robur
@Robur
Знаю больше чем это необходимо
() => (wraped)

Это будет иметь смысл если в первых скобочках будут какие-то параметры.
То есть вы можете сделать функцию которая будет как-то сконфигурирована, которую можно вызывать передавая wraped.
например
const withBookStoreService = (consProps) => (wraped) => {
  return (props) {
    return (
      <Consumer ...consProps>
        {
          (value) => {
            return (
              <Wraped {...props}
            )
          }
        }
      <Consumer>
    )
  }


Тогда вы можете сделать

const hoc1 = withBookStoreService(props)
const hoc2 = withBookStoreService(otherProps)

const wrappedInHoc1 = hoc1(component)
const wrappedInHoc2 = hoc2(component)


Скорее всего в оригинале это так и было, потом просто упростили до потери смысла. В таком виде как вы привели это конечно излишняя конструкция.

так же можно написать () =>() =>() => (wrapper)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы