Задать вопрос
  • Потеря this в mapDispatchToProps. Почему dispatch не имеет его?

    Krasnodar_etc
    @Krasnodar_etc
    fundraiseup
    Блин, я даже не знаю, что сказать... Давайте по-порядку
    1) По каким материалам вы учите? Они точно не устарели? Меня очень смущает ваш constructor, потому что пропсы и так автоматически записываются в this.props. Получается, что вместо всего метода можно написать просто
    class Interface extends React.Component{
      elements = null;
    ...
    }


    2) Тут я могу быть не прав, но, насколько я помню React.createRef можно использовать только внутри классового компонента. Функция mapStateToProps никак не связана с вашим классом Interface, у неё совсем другой контекст

    3) Теперь непосредственно о вашей проблеме. Редьюсер, в котором находится switch/case никак не связан с вашим классом Interface. Советую ещё раз перечитать в документации как работает this. У вас он указывает на функцию, в которой вы к нему обращаетесь. Не могу подсказать точнее, потому что меня немного вводит в ступор строка dispatch(action){

    Могу сказать только три вещи:
    - Никогда не обновляйте стейт вот так: this.state.SOME_FIELD = ... . Используйте для этого только this.setState({ SOME_FIELD: ... }) . Иначе компонент может не отрисовать новые данные
    - Редьюсер и redux никак не связаны со стейтом и вашими классами. У них абсолютно разный контекст выполнения. this в Реакте работает точно так же, как и должен работать в JS-e
    - Очень советую пройти официальный туториал по реакту - ссылка
    Ответ написан
    2 комментария