Slinidy
Slinidy

Reputation: 387

Why useEffect is triggering without dependency change?

I wanted only when I setCart to trigger useEffect. But this is not happening:

import React from 'react'
import { View } from 'react-native'

const CartScreen = () => {

    const [cart, setCart] = React.useState([])

    React.useEffect(() => {
        console.log('test');
    }, [cart])

    return (
        <View>
        </View>
    )
}

export default CartScreen;

Output: test

it fires without even having touched the cart state

Upvotes: 0

Views: 116

Answers (1)

Prithwee Das
Prithwee Das

Reputation: 5226

useEffect will always run the first time when your component is rendered. If you only want some code to run after you change the state you can just have an if statement to check that

import React from 'react'
import { View } from 'react-native'

const CartScreen = () => {
    const [cart, setCart] = React.useState([])

    React.useEffect(() => {
        if(cart.length > 0)
            console.log('test')
    }, [cart])

    return (
        <View>
        </View>
    )
}

export default CartScreen;

Upvotes: 1

Related Questions