Home > Net >  I am getting maximum depth exceeded while running react native code
I am getting maximum depth exceeded while running react native code

Time:04-21

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%'
  },
});

I am getting the error : Error: Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops. can anyone tell me why I am getting the error and what is the solution for that?

below is the button component:

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;

below is the input component:

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;

CodePudding user response:

You must use arrow-functions in the onPress method of your buttonComponent like this:

onPress={()=>props.addItem(...)}
  • Related