Reactjs 从子组件调用父组件中的函数-React+;通量+;中高音

Reactjs 从子组件调用父组件中的函数-React+;通量+;中高音,reactjs,reactjs-flux,Reactjs,Reactjs Flux,我正在react应用程序中使用flux+alt+es6结构。我想用我的子组件详细信息更新父状态 父函数: handleChange(name, e) { const change = {}; change[name] = e.target.value; this.setState(change); console.log('---state:--', this.state); } this.handleChange = this.handleChange.b

我正在react应用程序中使用flux+alt+es6结构。我想用我的子组件详细信息更新父状态

父函数:

handleChange(name, e) {
    const change = {};
    change[name] = e.target.value;
    this.setState(change);
    console.log('---state:--', this.state);
  }
this.handleChange = this.handleChange.bind(this)
子组件:

import React from 'react';
import { Input, Button, Glyphicon } from 'react-bootstrap';

export default class TextBoxesSet extends React.Component {
  constructor(props) {
    super(props);
  }
  _onRemoveName = (id) => {
    this.props.name.slice(id, 1);
  }
  static getPropsFromStores() {
    return {name: 'en', description: '', AttributeSectionName: []};
  }

  render() {
    return (
      <div >
        <div className="">
          <Input type="select" placeholder="select" wrapperClassName="col-xs-4"
          value={this.props.name} onChange={this.handleChange.bind(this, 'name')} >
            <option value="one">One</option>
            <option value="two">Two</ption>
            <option value="three">Three</option>
          </Input>
        </div>
        <div className="col-md-1">
          <Button bsSize="small"><Glyphicon glyph="remove" onClick={this._onRemoveName} /></Button>
        </div>
      </div>
    );
  }
  handleChange(name, e) {
    ParentComponent.handleChange(name, e);
  }
}
TextBoxesSet.propTypes = {
  name: React.PropTypes.object,
  description: React.PropTypes.object,
  AttributeSectionName: React.PropTypes.arrayOf(React.PropTypes.object)
};
从“React”导入React;
从“react bootstrap”导入{Input,Button,Glyphicon};
导出默认类textboxset扩展React.Component{
建造师(道具){
超级(道具);
}
_onRemoveName=(id)=>{
this.props.name.slice(id,1);
}
静态getPropsFromStores(){
返回{name:'en',description:'',AttributeSectionName:[]};
}
render(){
返回(
一个
两个
三
);
}
handleChange(名称,e){
ParentComponent.handleChange(名称,e);
}
}
TextBoxesSet.propTypes={
名称:React.PropTypes.object,
描述:React.PropTypes.object,
AttributeSectionName:React.PropTypes.arrayOf(React.PropTypes.object)
};

如何从子组件访问父组件中的函数?

将其作为道具传递,例如:

<TextBoxesSet handleChange={this.handleChange} />
您还需要将其添加为propType:

handleChange: React.PropTypes.func
如果需要访问函数中的
this
,则可能还需要在父构造函数中绑定正确的上下文:

handleChange(name, e) {
    const change = {};
    change[name] = e.target.value;
    this.setState(change);
    console.log('---state:--', this.state);
  }
this.handleChange = this.handleChange.bind(this)

谢谢,但是当我从子组件调用函数时.setState(更改)失败
错误:未捕获类型错误:this.setState不是函数
@AnushaNilapu Right,在类模型中禁用了自动绑定。因此,您需要在构造函数或其他地方绑定正确的上下文: