当前位置: 首页 > 知识库问答 >
问题:

React-Native=不变违规:超出最大更新深度

樊熠彤
2023-03-14

我有这个错误,以前也没有过:这是错误的图像“不变量冲突:超过最大更新深度”。当组件在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>
    );
  }
}

共有3个答案

冷涵忍
2023-03-14

如果您正在使用Expo,请重新启动Expo(终止并再次打开)。我不知道,但它对我有效。

曹景铄
2023-03-14

超过了最大更新深度。当组件重复调用组件WillUpdate或组件DidUpdate中的setState时,可能会发生这种情况。React限制嵌套更新的数量以防止无限循环。

唐修诚
2023-03-14

尝试:

<TouchableOpacity onPress={() => this.setState({ butPressed: true })}>

代替

<TouchableOpacity onPress={this.setState({ butPressed: true })}>

在没有箭头函数的情况下将{this.setState}分配给onPress会导致一次又一次的渲染,因为setState会将组件再次渲染,然后它会再次分配给onPress = {}. 使用箭头函数而不是分配一个函数,这样setState实际上不会发生,直到函数被激活。(仅当onPress被激活时)

 类似资料:
  • 我有以下登录屏幕,在将更新为之前工作正常。 更新后,当我尝试输入用户名或密码时,会抛出以下expection: 不变冲突:超过了最大更新深度。当组件重复调用componentWillUpdate或componentDidUpdate内部的setState时,会发生这种情况。React限制嵌套更新的数量,以防止无限循环。 我在这里阅读了许多关于堆栈溢出和互联网的问题,但似乎没有什么可以解决这个问题。

  • 我在React中运行我的应用程序时收到一个错误。这个错误有很多问题,但我不知道如何解决它。当我按下链接时,它会指向登录组件。“http://localhost:3000/login” 这是我在网站上得到的错误: “已超出最大更新深度。当组件重复调用组件内部的 setState 时,可能会发生这种情况“组件将更新”或“组件更新”。React 限制了嵌套更新的数量,以防止无限循环。 这是我的登录页面:

  • const[number, setNum]=useState(0);当我想添加和更改它时,我收到了这个错误(setNum(number 1))。我的错误:超过了最大更新深度。当组件在组件WillUpdate或组件DiUpdate中重复调用setState时,可能会发生这种情况。React限制嵌套更新的数量以防止无限循环。我能做些什么来解决这个问题?

  • 我有从另一个类设置我的状态的功能,但我收到了以下错误 超过最大更新深度。当组件在componentWillUpdate或componentDidUpdate内重复调用setState时,可能会发生这种情况。React限制嵌套更新的数量,以防止无限循环。 这是我的代码,看起来像 ... ... ... 有人能帮忙吗?

  • 我遇到一个错误: 超过了最大更新深度。当组件重复调用componentWillUpdate或componentDidUpdate内部的setState时,会发生这种情况。React限制嵌套更新的数量,以防止无限循环。 我的代码是: 我有另一个使用路由器切换页面的组件,以及一个包含登录页面的邮件组件。

  • 我有这个组件: 完全错误: 不变量违规:不变量违规:超过最大更新深度。当组件在组件WillUpdate或组件DidUpdate中重复调用setState时,可能会发生这种情况。React限制嵌套更新的数量以防止无限循环。 这是给出错误的函数: 我只需要将的状态设置为,这样我就可以切换组件的可见性。