reactnative 如何使用useFocusEffect触发useEffect
时间: 2023-07-19 13:18:26 浏览: 274
在 React Native 中,可以使用 `useFocusEffect` 钩子来触发 `useEffect` 钩子。`useFocusEffect` 钩子用于在屏幕获得或失去焦点时执行一些操作,可以用来处理一些与屏幕相关的逻辑,例如在屏幕获得焦点时重新加载数据等。以下是一个示例:
```javascript
import { useFocusEffect } from '@react-navigation/native';
function MyScreen() {
useFocusEffect(
React.useCallback(() => {
// 执行 useEffect 需要执行的逻辑
console.log('MyScreen is focused');
return () => {
// 执行 useEffect 中的清理操作
console.log('MyScreen is unfocused');
};
}, [])
);
return <View />;
}
```
在这个示例中,当 `MyScreen` 获得焦点时,会打印出 "MyScreen is focused",并且返回一个函数,在组件失去焦点时执行清理操作,打印出 "MyScreen is unfocused"。由于 `useFocusEffect` 本质上是一个 `useEffect` 钩子,因此可以使用 `useEffect` 钩子中支持的所有选项,例如依赖项数组等。
相关问题
【React避坑指南】useEffect 依赖引用类型
我可以回答这个问题。在使用 useEffect 时,如果依赖项是引用类型,需要注意引用是否发生了变化。如果引用没有变化,但是引用对象内部的属性发生了变化,也不会触发 useEffect 的重新执行。因此,可以使用解构赋值或者使用 useState 来避免这个问题。
阅读全文