React Redux TypeError this.props.setEmailText не является функцией

#javascript #reactjs #redux

#javascript #reactjs #redux

Вопрос:

React Redux TypeError this.props.setEmailText не является функцией. Это проблема с привязкой, так как, когда я получаю реквизиты с помощью {…this.props}, все хорошо? https://codesandbox.io/s/reduxex1-f9sid

 import React from "react";

export default class Auth extends React.Component {
  constructor(props) {
    super(props);
    this.onEmailChange = this.onEmailChange.bind(this);
    this.onPasswordChange = this.onPasswordChange.bind(this);
  }

  onEmailChange(e) {
    this.props.setEmailText(e.target.value);
  }

  onPasswordChange(e) {
    this.props.setPasswordText(e.target.value);
  }

  

Комментарии:

1. Не могли бы вы поделиться тем, как вы передаете реквизиты <Auth /> компоненту? Спасибо!

Ответ №1:

Вы переходите this.props.setEmailText к onEmailChange prop Auth компонента, onEmailChange={this.props.setEmailText} . Измените, чтобы использовать согласованное имя реквизита.

 class AuthContainer extends React.Component {
  render() {
    return (
      <Auth
        email={this.props.email}
        password={this.props.password}
        setEmailText={this.props.setEmailText} // <-- use setEmailText
        setPasswordText={this.props.setPasswordText}
      />
    );
  }
}
  

Теперь Auth можно получить доступ к реквизиту

 onEmailChange(e) {
  this.props.setEmailText(e.target.value);
}