Редуктор отправки React Redux

Я не понимаю, почему мой редуктор в Redux не хочет работать. Например функция setSelectedItem работает, а setCity не хочет.

консоль ведет только запись - ggg Bydgoszcz - или - ggg Toruń .

mapActions.js

export const setSelectedItem = (item) => {
    return (dispatch, getState) => {
        if(!item) {
            dispatch({
                type: actions.SET_SELECTED_ITEM_FAILED
            })
        } else { 
            dispatch({
                type: actions.SET_SELECTED_ITEM_SUCCESS,
                item
            })
        }
    }
}

export const setCity = (new_city) => {
    console.log("ggg", new_city)
    return (dispatch, getState) => {
        dispatch({
            type: actions.SET_CITY,
            city: new_city
        })
    }
}

mapReducer.js

case actions.SET_CITY:
    console.log('SET_CITY', state)
    return({
        ...state,
        city: action.city
    })
case actions.SET_SELECTED_ITEM_SUCCESS:
    console.log('SET_SELECTED_ITEM_SUCCESS', state)
    return({
        ...state, 
        selectedObject: action.item
    })
case actions.SET_SELECTED_ITEM_FAILED:
    console.log('SET_SELECTED_ITEM_FAILED', state)
    return({
        ...state
    })

Где я это называю:

        <div className={styles.dropMenuCitesContent}>    
            <ol>
                <li onClick={() => setCity("Toruń")}>Toruń</li>
                <li onClick={() => setCity("Bydgoszcz")}>Bydgoszcz</li>
            </ol>
        </div>
[...]
const mapDispatchToProps = dispatch => {
    return {
        setCity: value => dispatch(setCity(value))
    }
}

person poldeeek    schedule 05.05.2020    source источник


Ответы (1)


Попробуй это

   <div className={styles.dropMenuCitesContent}>    
        <ol>
            <li onClick={() => this.props.setCity("Toruń")}>Toruń</li>
            <li onClick={() => this.props.setCity("Bydgoszcz")}>Bydgoszcz</li>
        </ol>
    </div>


    const mapDispatchToProps = dispatch => {
        return {
            setCity: (value) => dispatch(setCity(value))
        }
    }
person Jesus Erwin Suarez    schedule 05.05.2020