Reactjs 从子组件调用父组件中的函数-React+;通量+;中高音
我正在react应用程序中使用flux+alt+es6结构。我想用我的子组件详细信息更新父状态 父函数: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
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,在类模型中禁用了自动绑定。因此,您需要在构造函数或其他地方绑定正确的上下文: