我正在使用RN应用程序,但是遇到一个问题,由于子组件中发生事件,我试图更改组件的状态,但结果却不一致。
var app = React.createClass({
render: function() {
return (
<MainLogin onLogin={this.onLogin} />
);
},
onLogin: function() {
this.setState({isLoggedIn: true});
}
});
class MainLogin extends Component {
render() {
return(
<Login changeSomething={this.changeSomething} onLogin={this.props.onLogin}/>
);
}
changeSomething() {
this.setState({something: true});
}
}
class Login extends Component {
constructor(props) {
super(props);
}
loginPressed() {
this.props.onLogin(); //This works
}
changeSomething() {
this.props.changeSomething(); //This doesn't work
}
render() {
return (
<View style={{flex: 1}}>
<Button onPress={this.changeSomething.bind(this)}>Change Something</Button>
<Button onPress={this.loginPressed.bind(this)}>Login</Button>
</View>
);
}
}
onLogin函数可以完美运行,并且能够设置Grandparent组件的状态,而changeSomething函数将失败(this.setState不是函数)。
有什么建议么?
最佳答案
您应该自动将ES6类中的组件方法绑定。React.createClass
,但是第二个和第三个组件是ES6类的子类。这是有关官方网站上的explanation。
关于javascript - Prop 处理人员工作不一致?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35584797/