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

运行react本机代码时超出了最大深度

顾俊楚
2023-03-14
import { StyleSheet, Text, View, ImageBackground, SafeAreaView } from 'react-native';
import react, {useState} from 'react';
import InputComponent from './sharedComponent/InputComponent';
import ButtonComponent from './sharedComponent/ButtonComponent';
export default function App() {
    const[text, setText] = useState('');
    const[todoList, setToDoList] = useState([]);
  return (
   <ImageBackground
   source={require('./assets/todoimages.png')}
   style={{width: '100%', height: '100%'}}
   >
     <SafeAreaView>
       <View style={styles.container}>
        <InputComponent onchangeValue={setText} 
        />
        <ButtonComponent
         addItem={setToDoList}
         itemToAdd={text}
        />
        </View>
        <View>
        {todoList.length > 0 && todoList.map((value) => <Text>{value}</Text>)}
        </View>
     </SafeAreaView>
   </ImageBackground>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    alignItems: 'baseline',
    justifyContent: 'center',
    paddingBottom:'10%'
  },
});

我得到错误:错误:超过最大更新深度。当组件重复调用componentWillUpdate或componentDidUpdate内部的setState时,会发生这种情况。React限制嵌套更新的数量,以防止无限循环。谁能告诉我为什么我会出现这个错误,有什么解决办法吗?

下面是按钮组件:

import {View,Button, StyleSheet} from 'react-native';

const ButtonComponent = (props) =>{
    return(
        <View style={styles.container}>  
        <View style={styles.buttonContainer}>  
            <Button  
                onPress={props.addItem(prevArray=> [...prevArray, props.itemToAdd])}  
                title="ADD"  
            />  
        </View>  
        </View>
    )
}

const styles = StyleSheet.create({  
    container: {  
        flex: 1,  
        justifyContent: 'center',  
    },  
    buttonContainer: {  
        margin: 20  
    },  
})  

export default ButtonComponent;

下面是输入组件:

import { Text, TextInput, View } from 'react-native';

const InputComponent = (props)=>{
    return(
        <TextInput
        style={{height: 40, backgroundColor:'white'}}
        placeholder="add the item in to do list"
        onChangeText={newText => props.onchangeValue(newText)}
      />
    )
}
export default InputComponent;

共有1个答案

齐弘业
2023-03-14

您必须在按钮组件的 onPress 方法中使用箭头函数,如下所示:

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

  • 周一开始用Python编程。我喜欢学习它。但是当在tkinter菜单之间切换时,我一直试图理解如何避免递归。我确信这是一个非常基本的问题,我很感激你能容忍我在这个问题上的无知,但是我在别处找不到答案。 我现在所做的是,最终给了我一个错误:RuntimeError:调用Python对象时超出了最大递归深度 这是我目前使用的模式。更新:下面的代码现在是一个完整的、独立的副本,重现了我面临的问题!:D

  • 当我添加<代码>时 我得到错误 超过了最大调用堆栈大小 当然,如果我注释掉

  • 我试图更新用户配置文件图像,但得到错误 超过了最大更新深度。当组件重复调用组件WillUpdate或组件DidUpdate中的setState时,可能会发生这种情况。React限制嵌套更新的数量以防止无限循环。 这是我的代码。 有人能告诉我这是怎么回事吗?

  • 嗨,伙计们,我试着使用Refs并给出在其内部,但它给出: 超过最大更新深度。当组件在componentWillUpdate或componentDidUpdate内重复调用setState时,可能会发生这种情况。React限制嵌套更新的数量,以防止无限循环。 我在做什么: 但当我使用时: 它的工作原理。 在其他组件中,我使用也很好,有人为什么?

  • 单击此处查看错误图像 我有这个错误,当我运行反应本机run-android在我的设备上,我怎么能修复它? 我运行这个: react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --