0

我无法弄清楚为什么我无法在我的父组件中获取数据。

我有组件 - AddButton组件 - AddTasktBox。我想将头衔从孩子传递给父母。

可能不好的是 AddButton 组件 - 因为浏览器给我这样的错误:

“TypeError:_this2.props.sendData 不是函数”

看看提交 - 输入“onClick = {this.handleClick}”(底部) - 我的代码开始传递

import React from 'react';
import ReactDOM from 'react-dom';

class AddButton extends React.Component{

  constructor(props){
    super(props);

    this.state = {
      isHidden: false,
      title: '',
    };
  }

  sendData = (data) => {
    console.log(data);
    this.setState({
      title: data
    })
  };

  toggleHidden = () => {
      this.setState({
        isHidden: !this.state.isHidden
      })
  }

  render(){
    return(
      <div>
        <div
          onClick={this.toggleHidden.bind(this)}
          className="addtask__btn">
          +
        </div>
        {this.state.isHidden && <AddTaskBox handleClose={this.toggleHidden.bind(this)} handleClick={this.sendData.bind(this)}/>}
      </div>
    );
  }
}

class AddTaskBox extends React.Component{
  constructor(props){
      super(props);

      this.state = {
        title: '',
        description: ''
      };

      this.handleChange = this.handleChange.bind(this);
      this.handleClick = this.handleClick.bind(this);
  }

  handleChange = (e) => {
    this.setState({
      [e.target.name]: e.target.value
    })

  }

  handleClick = () => {
    this.props.sendData(this.state.title);
  }

  render(){
    return(
      <div className="addtask__box" >
        <div className="addtask__close" onClick={this.props.handleClose}>X</div>
        <form >
          <input
            type="text"
            name="title"
            placeholder="Nazwa Czynności"
            value={this.state.title}
            onChange={this.handleChange}/>

          <textarea
            name="description"
            value={this.state.description}
            onChange={this.handleChange}
            placeholder="Opis czynności">
          </textarea>

          <input
            className="btn"
            type="submit"
            value="submit"
            onClick={this.handleClick}/>
        </form>
      </div>
    );
  }
}

export {AddButton, AddTaskBox};
4

1 回答 1

0

你不是sendData()作为道具传递给AddTaskBox

<AddTaskBox sendData={this.sendData} />
于 2017-11-20T17:22:44.467 回答