React useToggler 钩子

ReactReactBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将探索 React 中的 useToggler 钩子。这个钩子提供了一种简单而有效的方法来创建一个布尔状态变量,该变量可以在其两种状态之间切换。在本实验结束时,你将更好地理解如何在你的 React 应用程序中使用这个钩子,为你的组件创建切换功能。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL react(("React")) -.-> react/FundamentalsGroup(["Fundamentals"]) react(("React")) -.-> react/AdvancedConceptsGroup(["Advanced Concepts"]) react(("React")) -.-> react/StateManagementGroup(["State Management"]) react/FundamentalsGroup -.-> react/jsx("JSX") react/FundamentalsGroup -.-> react/event_handling("Handling Events") react/FundamentalsGroup -.-> react/conditional_render("Conditional Rendering") react/AdvancedConceptsGroup -.-> react/hooks("React Hooks") react/StateManagementGroup -.-> react/use_state_reducer("Using useState and useReducer") subgraph Lab Skills react/jsx -.-> lab-38413{{"React useToggler 钩子"}} react/event_handling -.-> lab-38413{{"React useToggler 钩子"}} react/conditional_render -.-> lab-38413{{"React useToggler 钩子"}} react/hooks -.-> lab-38413{{"React useToggler 钩子"}} react/use_state_reducer -.-> lab-38413{{"React useToggler 钩子"}} end

React useToggler 钩子

虚拟机中已经提供了 index.htmlscript.js。一般来说,你只需要在 script.jsstyle.css 中添加代码。

要创建一个可以在两种状态之间切换的布尔状态变量,请按照以下步骤操作:

  1. 使用 useState() 钩子创建 value 状态变量及其设置函数。
  2. 创建一个函数,用于切换 value 状态变量的值,并使用 useCallback() 钩子对其进行记忆化。
  3. 返回 value 状态变量和记忆化的切换函数。

以下是一个示例实现:

const useToggler = (initialState) => {
  const [value, setValue] = React.useState(initialState);

  const toggleValue = React.useCallback(() => setValue((prev) => !prev), []);

  return [value, toggleValue];
};

然后,你可以在组件中使用这个钩子,如下所示:

const Switch = () => {
  const [val, toggleVal] = useToggler(false);
  return <button onClick={toggleVal}>{val ? "ON" : "OFF"}</button>;
};

ReactDOM.createRoot(document.getElementById("root")).render(<Switch />);

请点击右下角的“Go Live”以在端口 8080 上运行 Web 服务。然后,你可以刷新“Web 8080”标签页来预览网页。

总结

恭喜你!你已经完成了 React useToggler 钩子实验。你可以在 LabEx 中练习更多实验来提升你的技能。