首页 > 解决方案 > 为什么 useEffect 在不改变依赖关系的情况下触发?

问题描述

我只想在 setCart 触发 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;

输出:测试

它甚至在没有触及购物车状态的情况下触发

标签: react-nativeuse-effect

解决方案


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;

推荐阅读