@Pumba8897

Почему не вызывается action Redux?

Почему не могу вызвать action при нажатии на кнопку. В консоль падает ошибка Cannot read property 'props' of undefined. Не понимаю что делаю не так.

Код компонента:
import React, {Fragment} from 'react';
import Nav from './Nav';
import { connect } from 'react-redux';

import { Login } from '../actions/user';

class Profile extends React.Component {
    handleLogin() {
        this.props.LoginAction();
    }

    render() {
        return(
            <Fragment>
                <h1>Profile !!!</h1>
                <Nav/>
                <button onClick={this.handleLogin}>LOGIN</button>
            </Fragment>
        )
    }
}

const mapStateToProps = store => {
    return {
        isLogin: store.user.isLogin,
        isLoaded: store.content.isLoaded,
    }
}

const mapDispatchToProps = dispatch => {
    return {
        LoginAction: () => dispatch(Login())
    }
}

export default connect(
    mapStateToProps,
    mapDispatchToProps
)(Profile);


Редюсер:

const initialState = {
    isLogin: false
}

export function userReducer(state = initialState, action) {
    switch(action.type) {
        case 'LOGIN':
            return {
                ...state, isLogin: !state.isLogin
            }
        default:
            return state
    }
}


Экшн который хочу вызвать:

export function Login() {
    return {
        type: 'LOGIN'
    }
}


Состояние из стора компонент видит
  • Вопрос задан
  • 388 просмотров
Решения вопроса 1
tsepen
@tsepen
Frontend developer
Попробуй заменить handleLogin на стрелочную функцию
handleLogin = () => {
        this.props.LoginAction();
    }


Или передать контекст через bind
onClick={this.handleLogin.bind(this)}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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