Как вы читаете эту функцию карри из перекомпоновать .. мой мозг болит - PullRequest
2 голосов
/ 27 марта 2019

На моей работе мы используем перекомпоновку, и мы используем такие функции карри, которые кажутся мне слишком сложными и причиняют боль моему мозгу.

Кто-нибудь может объяснить по-английски, как это работает?

Спасибо

  withStateHandlers(({ readAt, isSender }) => ({ trackVisibility: !isSender && !readAt }), {
    updateTrackVisibility: () => () => ({
      trackVisibility: false,
    }),
  }),

Я знаю, что readAt и isSender происходят из фрагмента, объявленного выше.Наиболее запутанная часть - это функция, которая возвращает другую функцию после updateTrackVisibility ???

1 Ответ

1 голос
/ 04 апреля 2019

Из перекомпоновать API :

withStateHandlers(
  initialState: Object | (props: Object) => any,
  stateUpdaters: {
    [key: string]: (state:Object, props:Object) => (...payload: any[]) => Object
  }
)

props - реквизиты, переданные от родительского (или выше HOC)

state передается от объекта, созданного в initialState

payload, параметры передаются с места, где мы запустили функцию (обработчик)

Что означает в вашемкод:

первый параметр - ({ readAt, isSender }) => ({ trackVisibility: !isSender && !readAt }) - создать реквизит trackVisibility (с закодированным значением)

второй параметр - добавить функциюкоторый при срабатывании делает trackVisibility ложным

Другой (надуманный) пример:

const enhancer = withStateHandlers(({ title, text, maxChars }) => ({ isLongTitle: title.length > maxChars, text }), {
  addText: (state, props) => (text) => ({
    text: state.text + text,
    isLongTitle: state.text.length + text.length > props.maxChars
  }),
})

const MyComponent = enhancer(props => {
  return (
    <input onChange={event => props.addText(event.target.value)} />
  )
}
...