Как разрешить undefined props в reactjs

Это дочерний компонент

import React, {Component} from 'react';
import {bindActionCreators} from 'redux';
import {connect} from 'react-redux';
import leftNavigation from '../actions/leftNavigation';

class AddBorrowers extends Component {
     constructor(props){
        super(props);
     }

     render(){
          return(
             <div className = {this.props.classValue + ' ' + 'borrowerForm'} 
                onClick = {() => {
                    this.props.sendActions('hide Add Borrrowers Form')
                }
             }>
             </div>
   )
 }

}

это мой родительский контроллер BorrowersParent

class BorrowersParent extends Component {
constructor(props){
     super(props); 
}

 sendActions (data) {
      switch(data){
          case 'hide Add Borrrowers Form':
              console.info(this.props);
          break;
      }
 }

  render(){
    return(
        <div className = {this.props.borrowersParent}>
             <AddBorrowers classValue = {this.props.addBorrowers} sendActions = {this.sendActions}/>

        </div>
    );
  }

}

это мои mapStateToProps и mapDispatchToProps

function mapStateToProps(state) {
      return {
          addBorrowers: state.parentReducer.ui_state.addBorrowers,
}}

function mapDispatchToProps(dispatch){
      return bindActionCreators({
            leftNavigation: leftNavigation}, dispatch);
}

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

Примечание. Компонент AddBorrowers и BorrowersParent находятся в одном файле.

При запуске onClick в компоненте AddBorrowers this.props продолжает возвращать undefined из метода sendActions, расположенного в BorrowersParent.

пожалуйста, мне нужно перестать получать undefined из this.props, как мне это сделать? Мне нужно событие onClick для запуска dispatch () ??

sendActions - это обратный вызов. Он должен быть привязан к правильному this.

Estus Flask 10.01.2019 12:29

@estus .. пожалуйста, как мне этого добиться

Olatunji Odelade 10.01.2019 12:30

Смотрите ответы в дублированном вопросе.

Estus Flask 10.01.2019 12:31
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
160
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Либо вы используете функцию стрелки на sendActions:

 sendActions = (data) => {
      switch(data){
          case 'hide Add Borrrowers Form':
              console.info(this.props);
          break;
      }
 }

или вы привязываете этот метод в конструкторе:

constructor(props){
     super(props);
     this.sendActions = this.sendActions.bind(this)
}

Без вышеуказанного контекст this изменяется во время события щелчка, и поэтому this.props не существует.

Хорошо .. позвольте мне быстро проверить это

Olatunji Odelade 10.01.2019 12:32

Вау! это полностью решило это, мне нужно ответить на вопрос, который я продублировал ...

Olatunji Odelade 10.01.2019 12:37

рад что помог. стрелочная функция создает лексическую привязку вместо динамической. При лексической привязке контекст «this» остается там, где он был определен.

Liren Yeo 10.01.2019 12:43

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