屏幕聚焦时执行副作用
屏幕聚焦时执行副作用
屏幕聚焦时执行副作用
屏幕聚焦时执行副作用
函数组件中
- 方式一
1
2
3
4
5
6
7
8
9
10
11
function Profile({ navigation }) {
React.useEffect(() => {
const unsubscribe = navigation.addListener('focus', () => {
// do something
});
return unsubscribe;
}, [navigation]);
return <ProfileContent />;
}
- 方式二
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import { useFocusEffect } from '@react-navigation/native';
function Profile({ userId }) {
const [user, setUser] = React.useState(null);
useFocusEffect(
React.useCallback(() => {
const unsubscribe = API.subscribe(userId, (user) => setUser(user));
return () => unsubscribe();
}, [userId])
);
return <ProfileContent user={user} />;
}
类组件中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Profile extends React.Component {
componentDidMount() {
this._unsubscribe = navigation.addListener('focus', () => {
// do something
});
}
componentWillUnmount() {
this._unsubscribe();
}
render() {
// Content of the component
}
}
本文由作者按照 CC BY 4.0 进行授权