Получить перекомпоновать локальную функцию отправки из withReducer в withHandlers

У меня есть компонент, который уже подключен к redux хранить и имеет dispatch вводится к нему. Я пытаюсь обновить локальное состояние компонента, используя withReducer а также withHandlers как это:

const reducer = (state, action) => {
  switch (action.type) {
    case 'SET_ACTIVE_TAB':
      console.log('recieved action', action)
      const { activeTab } = action
      return activeTab
    default:
     return state
  }

}

const initialState = 'actions'

const handlers = withHandlers({
  onTabClick: props => (e, { name }) => {
    const { dispatchLocal } = props
    dispatchLocal({
      type: 'SET_ACTIVE_TAB',
      activeTab: name
    })
  }
})

const enhancer = withReducer('activeTab', 'dispatchLocal', reducer, initialState)

Я нахожу это, когда я compose:

compose(handlers, enhancer)(LayerListItem)

dispatchLocal опора не определена в пределах handler, Каков наилучший способ создания и связывания действий создателей с recompose обновить состояние приложения.

1 ответ

Вы должны двигаться withReducer справа от withHandlers:

compose(
  withReducer(...),
  withHandlers(...)
)

В этом случае, withReducer сначала создаст диспетчерскую функцию и добавит ее props, затем withHandlers может потреблять это.

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