道具处理程序无法始终如一地工作
prop handlers not working consistently?
我正在开发一个 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 类进行子类化。这是官方网站上对此的解释。
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript打印功能使日历停止工作
- Javascript.getHours()工作不正常
- 为什么这在IE中的工作方式与在Firefox中不同
- 视频HTML没有'无法在Internet Explorer 11上工作
- 扩展移相器按钮类不工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 角度控制器功能不;在指令内部调用时,似乎无法始终如一地工作
- MYSQL更新没有'我不能始终如一地工作
- createElementNS是否始终如一地离线工作?特别是使用 SVG 命名空间
- 道具处理程序无法始终如一地工作
- AJAX 无法始终如一地工作
- 删除记录并刷新Won't始终如一地工作
- HTML5 的音频标签在 Firefox 中无法始终如一地工作
- Escape()似乎不能始终如一地工作
- drawImage() 不能始终如一地工作