使用 uselocation hook 有什么好处?使用位置与全球位置

what is the benefit of usage uselocation hook? useLocation vs global location

你好,我正在寻找 uselocation hook 的意义所在的答案。我正在构建我的第一个反应项目。我可以轻松到达全球定位对象并且工作正常。使用这个钩子能得到什么好处?

谢谢。

要更笼统地回答您的问题,您必须首先了解差异,例如状态变量与实例变量,或自定义 React 挂钩与普通 JavaScript 函数等。

示例:

const foo = "bar";
// vs:
const [foo, setFoo] = useState("bar");
import fooFunc from "./fooFunc";
import useFooFunc from "./useFooFunc";

const foo = fooFunc;
// vs:
const foo = useFooFunc();

第一个示例的不同之处在于,每次更新 non-state 变量 foo 时,React 都不会意识到更改,因此不会在组件中导致 re-render (使用 foo 变量的组件)。所以如果你想让 React(React 的生命周期)捕捉那个变化,你必须使用状态变量。 Check this working example on codesandbox.

作为一般规则(non-technically 来说):任何与组件 life-cycle 相关的东西都必须用 React 语言.

还有第二个例子,本质上都是同一个故事。只要您不需要在其中使用“React stuff”,fooFunc 就没有问题,例如,假设您想要进行 API 调用,因此您需要使用 useEffect 挂钩(否则事情将脱离 React 的控制,随之而来的是意想不到的行为),这就是为什么只要 fooFunc 是一个普通的 JavaScript 函数,React 就不允许您在其中使用 React hooks。 React's documentation page for Rules of Hooks 上也提到了这一点:

Don’t call Hooks from regular JavaScript functions. Instead, you can:

✅ Call Hooks from React function components.

Call Hooks from custom Hooks.

不回你的问题了,我想你可以自己猜到答案。但我也会再解释一次。 React Router 是一个使用 React 为 React 编写的库,因此为了让事情完全同步并在这些工具的控制下,您不必在此过程中输入 outsider。请记住,您可以 使用全局位置对象,但根本不推荐这样做(除非您确切地知道自己在做什么)。