gpt4 book ai didi

react-native - 是否有正确的方法使用 useNavigation() 钩子(Hook)和 useEffect() 依赖项?

转载 作者:行者123 更新时间:2023-12-04 01:43:42 25 4
gpt4 key购买 nike

我正在尝试使用 useNavigation() Hook 与 react-navigation 交互,以响应我在 useEffect() 中注册的回调。 linter 警告我 useEffect() 缺少依赖项。如果我将导航钩子(Hook)添加为依赖项,效果会持续运行。我试图避免这种情况,并想知道除了忽略 linter 错误之外是否还有正确的方法。

不提供依赖数组会导致效果持续触发的相同行为。

这可能是 react-navigation-hooks 包中的 useNavigation() Hook 如何工作的潜在问题。

function MyComponent() {
const navigation = useNavigation();

useEffect(() => {
navigation.navigate('Home');
}, []);
}

结果是:
React Hook useEffect has a missing dependency: 'navigation'. Either include it or remove the dependency array.

最佳答案

只是一个自以为是的猜测:这更多是关于您的“架构”的问题。
例如:对于自定义 useNavigation 是否更有意义?钩子(Hook)返回一个可以由钩子(Hook)的使用者调用的函数,而不是一个具有所有功能的对象?
这是一个例子:

const useNavigation = () => {
const [routes, setRoutes] = useState(null);
...

const navigate = (destination: string) => {
console.log("navigated to ", destination);
};

return { navigate, routes };
};

function App() {
const { navigate } = useNavigation();

return (
<div className="App">
<h1>Parent</h1>
<button onClick={() => navigate("Home")}>Navigate me!</button>
</div>
);
}

工作密码箱: https://codesandbox.io/s/usenavigation-95kql

如果你仍然想保留这个“架构”,你可以使用 useRef像这样钩子(Hook):
const navigation = useRef(useNavigation());

useEffect(() => {
navigation.current.navigate("Home");
}, []);

关于react-native - 是否有正确的方法使用 useNavigation() 钩子(Hook)和 useEffect() 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56243575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com