Redux - отправка не определена в действии - PullRequest
3 голосов
/ 08 апреля 2020

Я новичок в редуксе, но у меня есть проблема, которую я не понимаю, и она не может ее исправить.

Проблема в том, когда я хочу отправить внутрь мое действие, у меня есть ошибка, которая сказала:

отправка не является функцией

Да, он не определен, и это точка, почему он не определен?

export const clearError = dispatch => {
    console.log('clear error')
    console.log(dispatch)

    dispatch({
        type: 'CLEAR_ERROR'
    })
}

Я вызываю действие clearError от Main. js, возможно, моя инициализация неверна, но я пробовал несколько способов, например bindActionCreators ...

Main. js (как я передаю реквизиты и отправляю с connect)

const mapStateToProps = (state) => state
const mapDispatchToProps = {
    clearError: clearError
}

export default connect(
    mapStateToProps,
    mapDispatchToProps
)(Main)

Я действительно сбит с толку, потому что в другом компоненте я использую два других действия, выполненных таким же образом, и все в порядке ...

Я не знаю, может ли это помочь вам понять причину проблемы но я покажу вам, как я настраиваю магазин для вызова configureStore () в приложении. js.

import {applyMiddleware, createStore} from "redux";
import thunk from 'redux-thunk';

import reducers from './reducers'

const configureStore = () => {
    const middleware = [thunk]
    return createStore(reducers, applyMiddleware(...middleware))
}

export default configureStore

Я слушаю каждую помощь и советы о редуксе и лучшем способе использовать это!

Спасибо большое за чтение ❤️

1 Ответ

1 голос
/ 08 апреля 2020

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

export const clearError = () => dispatch => {

Когда вы передаете создателей действия в mapDispatchToProps, Redux «сопоставляет» этот аргумент отправки с вашими создателями действий, а затем назначает создателей сопоставленных действий свойствам компонента.
По этой же причине вам нужно вызывать this.props.clearError() вместо clearError().

...