Javascript React Native/Redux-setState-无法在现有状态转换期间更新

Javascript React Native/Redux-setState-无法在现有状态转换期间更新,javascript,reactjs,react-native,redux,Javascript,Reactjs,React Native,Redux,我正在使用React Native和Redux构建一个应用程序,在实现过程中遇到了一个问题。我收到一个错误,上面写着 setState无法在现有状态转换期间更新(例如 在渲染或其他组件的构造函数中) 当我加载应用程序模拟器时,它似乎会在任何用户输入之前立即触发handleLogin() 以下是AuthenticationContainer和AuthenticationPage代码: AuthenticationContainer.js: “严格使用” 从“React”导入React,{Compo

我正在使用React Native和Redux构建一个应用程序,在实现过程中遇到了一个问题。我收到一个错误,上面写着

setState无法在现有状态转换期间更新(例如 在渲染或其他组件的构造函数中)

当我加载应用程序模拟器时,它似乎会在任何用户输入之前立即触发handleLogin()

以下是
AuthenticationContainer
AuthenticationPage
代码:

AuthenticationContainer.js:
“严格使用”
从“React”导入React,{Component,PropTypes};
从“../../components/Authenticate/AuthenticatePage”导入AuthenticatePage
从'react redux'导入{connect};
从“redux”导入{bindActionCreators}
从“../../redux/session”导入*作为SessionActionCreator;
从“react native router flux”导入{Actions,ActionConst}
类AuthenticateContainer扩展组件{
建造师(道具){
超级(道具);
此.state={
电子邮件:“”,
密码:“”
};
}
handleLogin(){
this.props.doLogin(this.state.email,this.state.password)
.然后(()=>Actions.tabbar())
}
render(){
返回(
);
}
}
AuthenticateContainer.propTypes={
doLogin:PropTypes.func.isRequired,
电子邮件:PropTypes.string,
密码:PropTypes.string,
错误:PropTypes.string.isRequired
};
导出默认连接(
(state)=>({isFetching:state.session.isFetching,错误:state.session.error}),
(分派)=>bindActionCreators(sessionActionCreators,分派)

)(AuthenticateContainer)
我认为问题在于:

onClick={this.props.doLogin()}
render
上调用函数,但应将其作为道具传递。要么尝试

onClick={() => this.props.doLogin()}


修理

不得不问,为什么在项目中使用Redux时直接更改状态?嗨,Maarten,你是说在AuthenticationPage中吗?我试图改变该组件的状态以处理来自表单的输入。如何实现这一点?使用本地状态存储文本字段的值是可以的。但我不明白的是,为什么在这两个组件中都有电子邮件和密码作为状态。你应该把它放在子组件中,doLogin在函数调用中把pass和email作为参数。嗨,John,我假设子组件不应该把props作为参数传递给父组件。对吗?下面是我读到的关于这个的内容:
onClick={this.props.doLogin.bind(this)}