我有这个错误,我之前没有这个错误: here is the image of the error 不变违规:超出最大更新深度。当组件在componentWillUpdate或componentDidUpdate中重复调用setState时,可能会发生这种情况。 React限制嵌套更新的数量以防止无限循环。
此错误位于: 在Connect(在LoginForm.js:75)
render() {
const { inputStyle, containerStylePass, containerStyleIdent, barStyle, textInputStyle } = styles;
return (
<View>
<View>{/* all the password form*/}
<View style={containerStylePass}>
icon
<Text style={inputStyle}>Mot de passe</Text>
</View>
<TextInput
secureTextEntry
autoCorrect={false}
style={textInputStyle}
/>
<View style={barStyle} />
</View>
<View>
<Connect />
</View>
</View>
我不知道为什么会出错,有人可以帮忙吗?
这是我的代码:
import React, { Component } from 'react';
import { Text, TouchableOpacity } from 'react-native';
import LinearGradient from 'react-native-linear-gradient';
class Connect extends Component {
render() {
return (
<TouchableOpacity onPress={this.setState({ butPressed: true })}>
<LinearGradient
colors={['#56EDFF', '#42F4A0']}
start={{ x: 0.0, y: 1.0 }} end={{ x: 1.0, y: 1.0 }}
>
<Text style={textStyle}>
Se connecter
</Text>;
</LinearGradient>
</TouchableOpacity>
);
}
}
答案 0 :(得分:7)
尝试:
<TouchableOpacity onPress={() => this.setState({ butPressed: true })}>
代替
<TouchableOpacity onPress={this.setState({ butPressed: true })}>
将{this.setState}分配给不带箭头功能的onPress会导致一遍又一遍的渲染,因为setState将组件重新封装,然后再次进行onPress = {}的分配。 使用箭头功能会导致分配功能,因此只有在激活功能后才实际发生setState。 (仅在激活onPress时)
答案 1 :(得分:2)
超出最大更新深度。当组件在componentWillUpdate或componentDidUpdate中重复调用setState时,可能会发生这种情况。 React限制嵌套更新的数量以防止无限循环。
答案 2 :(得分:0)
如果使用的是Expo,请重新启动Expo(终止并再次打开)。我不知道,但这对我有用。