Javascript 是什么原因引起的;RangeError:超过最大调用堆栈大小;在我的代码里?
嗨,我正在尝试为我的应用程序创建自己的登录屏幕,我收到了这个错误 它说错误位于: 登录时(在App.js:12) 这是我的Login.js:Javascript 是什么原因引起的;RangeError:超过最大调用堆栈大小;在我的代码里?,javascript,react-native,react-native-android,Javascript,React Native,React Native Android,嗨,我正在尝试为我的应用程序创建自己的登录屏幕,我收到了这个错误 它说错误位于: 登录时(在App.js:12) 这是我的Login.js: import React,{Component}来自“React”; 从“react native”导入{View,Text}; 从“./组件”导入{标题、卡片、卡片节、输入、按钮、微调器}; 从“./components/PasswordTextInput”导入PasswordTextInput; 类登录扩展组件{ 状态={email:,密码:,错误:,
import React,{Component}来自“React”;
从“react native”导入{View,Text};
从“./组件”导入{标题、卡片、卡片节、输入、按钮、微调器};
从“./components/PasswordTextInput”导入PasswordTextInput;
类登录扩展组件{
状态={email:,密码:,错误:,加载:false};
onButtonPress(){
const{email,password}=this.state;
如果(email.length==0 | | password.length==0){
这是我的国家({
错误:“请输入有效凭证”,
加载:错误
})
}
否则{
this.setState({error:,load:true});
}
}
onLoginFail(){
这是我的国家({
错误:“身份验证失败”,
加载:错误
});
}
onloginsucess(){
这是我的国家({
电邮:“,
密码:“”,
加载:false,
错误:“
});
}
renderButton(){
if(this.state.loading){
返回;
}
返回登录;
}
渲染器(){
如果(this.state.error.length>0){
返回{this.state.error}
}
}
render(){
返回(
this.setState({email})}
/>
this.setState({password})}
/>
{this.state.error.length>0&&{this.state.error}
{this.renderButton()}
);
}
}
常量样式={
错误样式:{
尺码:18,
对准自己:“居中”,
颜色:“红色”,
填充:5
}
};
导出默认登录;
这是我的App.js:
import React,{Component}来自'React';
进口{
评价学
}从“反应本机”;
从“./src/pages/Login”导入登录名;
导出默认类应用程序扩展组件{
render(){
返回(
);
}
}
AppRegistry.registerComponent('App',()=>App);
我已经读过一些关于类似问题的解决方案,有人说我正在调用一个函数,这个函数调用另一个函数并来回调用,因此它达到了极限
你能检查一下我的代码并告诉我必须对Login.js文件做什么更改吗?请参见
“这意味着在代码中的某个地方,您正在调用一个函数,而该函数反过来又调用另一个函数,以此类推,直到达到调用堆栈限制
这几乎总是因为递归函数的基本情况没有得到满足。”
因此,如果您尝试将函数分成小部分,以验证在代码中的某个特定点上不会再超过堆栈。我将抛出一个三元组,看看它是否进入: 我认为您遇到的问题如下:在输入和PasswordTextInput中,您在onChangeText方法中写得不正确。这是可行的,但除了在修改文本时执行外,还将在呈现组件时立即执行 除此之外,每次更改文本时,状态都会被修改(这很好),但只要更改状态,就会执行render方法。由于标记有一个value方法,该方法在每次执行render方法时都为其提供值,因此该值会更改,从而通过再次更改状态来执行onChangeText方法,从而产生问题 一旦执行了render方法,onChangeText就会在启动时执行,错误就会出现 解决方案:将您的输入更改为:
<Input
placeholder="Enter Email"
label="Email"
onChangeText={(email) => {
this.setState({ email })
}}
/>
<PasswordTextInput
placeholder="Enter Password"
label="Password"
onChangeText={(password) => {
this.setState({ password })
}}
/>
{
this.setState({email})
}}
/>
{
this.setState({password})
}}
/>
祝你好运^什么时候抛出错误?在初始渲染时还是在按下按钮时?