react-native - 为什么 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;
输出:测试
它甚至在没有触及购物车状态的情况下触发
解决方案
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;
推荐阅读
- javascript - 在单击遮罩图像时显示文件上传对话框
- laravel - laravel 5.2 轮播仅在索引页面中不起作用
- powershell - 在哪里可以找到有关 add_ 的文档
( ) 像 add_click、add_shown 使用 powershell? - c# - 可空引用类型的注释只能在“#nullable”上下文中的代码中使用
- jenkins - 无法在 gradle 项目中加载资源
- c# - datagridview 中令人不快的空单元格
- java - 使用 java 在 slack 中使用深度链接方法打开本机应用程序
- scala - 映射 Json 对象时动态转换 JsonElement 值
- android - 在对象检测 API 上解释 TF lite 的输出
- jquery - 隐藏/显示单选按钮的触发器