Почему useEffect запускается без изменения зависимости? - PullRequest
0 голосов
/ 06 мая 2020

Я хотел только тогда, когда я установил Cart для запуска useEffect. Но этого не происходит:

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;

Вывод: test

он срабатывает, даже не коснувшись состояния тележки

1 Ответ

1 голос
/ 06 мая 2020

useEffect всегда будет запускаться в первый раз при визуализации вашего компонента. Если вы хотите, чтобы код запускался только после изменения состояния, вы можете просто использовать оператор if, чтобы проверить, что

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;
...