我正在开发一个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函数运行完美,能够设置祖父组件的状态,而changeSomething函数失败(this.setState不是函数)。
有什么建议吗?
答案 0 :(得分:1)
您应该在ES6类中绑定组件方法。React.createClass
自动执行此操作,但您的第二个和第三个组件使用ES6类进行子类化。这是官方网站上的explanation。