跳至主要内容
版本: 6.x

useIsFocused

我们可能希望根据屏幕的当前焦点状态渲染不同的内容。库导出一个 useIsFocused 钩子来简化此操作。

import { useIsFocused } from '@react-navigation/native';

// ...

function Profile() {
const isFocused = useIsFocused();

return <Text>{isFocused ? 'focused' : 'unfocused'}</Text>;
}

请注意,使用此钩子会在屏幕焦点发生变化时触发组件重新渲染。如果您的组件很重,这可能会在动画期间导致延迟。您可能希望将昂贵的部件提取到单独的组件中,并使用 React.memoReact.PureComponent 来最大程度地减少它们的重新渲染。

与类组件一起使用

您可以将类组件包装在函数组件中以使用钩子

class Profile extends React.Component {
render() {
// Get it from props
const { isFocused } = this.props;
}
}

// Wrap and export
export default function (props) {
const isFocused = useIsFocused();

return <Profile {...props} isFocused={isFocused} />;
}