React - TypeError: this.props.AccountId не является функцией - PullRequest
3 голосов
/ 04 февраля 2020

Я провел исследование по этой проблеме, но, похоже, не могу найти решение своей проблемы.

Кажется, что другой пост той же проблемы связан с вопросами связывания, но я не думаю, что вот в чем проблема.

Когда я загружаю страницу, должна отображаться реквизит, но она ничего не показывает.

Когда я пишу в текстовой форме, я получаю ошибку: TypeError : this.props.AccountId не является функцией ", и вот где я застрял.

import React from 'react';

 class Accountparent extends React.Component {
  constructor(props) {
    super(props);
    this.onFocusChange = this.onFocusChange.bind(this);
    this.state = {accountobj: ''};
  }

   onFocusChange(value){
    this.setState({accountobj: value});
  }
  render() {
    return (
      <div>
        <Account value={this.state.accountobj} AccountId={this.onFocusChange}/>
      </div>
    )
  }
}

class Account extends React.Component {
  constructor(props) {
    super(props);
    this.EditAccount = this.EditAccount.bind(this)
    this.state = {
      accounts: [],
    };
  }
  EditAccount(e){
    this.props.AccountId(e.target.value)
  }


  render() {
    const value = this.props.AccountId;
    return (
      <div>
        <div>The props is: {this.props.dataid}</div>
        <div>Write to textfield to pass data to parent: <input value={value} type="text" onChange={this.EditAccount}/></div>
      </div>

    )
  }
}
export default Account;

EDIT : Как предположил @Taki, я должен экспортировать родителя. Это решение

Ответы [ 2 ]

0 голосов
/ 04 февраля 2020

Как подсказал @Taki, я должен экспортировать родителя. Это решение

0 голосов
/ 04 февраля 2020

Проверьте ваш код,

EditAccount(e){
    this.props.AccountId(e.target.value)
  }


  render() {
    const value = this.props.AccountId;
    . . .

В методе EditAccount вы используете его как функцию. В методе рендеринга вы извлекаете из него «значение». Это может быть значение или функция. НЕ оба.

...