首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

你应该会喜欢的5个自定义 Hook

在请求之前,将loading设置为true,并在请求之后完成后设置为false。...因此,此数组将包含有状态值和在将其持久存储在localStorage 中时对其进行更新的函数。 首先,我们创建将与 localStorage 同步的React状态变量。...最后,我们需要创建 update 函数来返回它将在localStorage 中存储任何状态的更新,而不是使用useState 返回的默认更新。...这个 Hook 主要按需启用和禁用暗模式,将当前状态存储在localStorage 中。 为此,我们将使用我们刚刚构建的两个钩子:useMediaQuery和useLocalStorage。...然后,使用“ useLocalStorage”,我们可以在localStorage中初始化,存储和保留当前状态(暗或亮模式)。

8.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    听说现在都考这些React面试题

    如果有跟着文档走 02 了解 React 中的 ErrorBoundary 吗,它有那些使用场景 03 有没有使用过 react hooks,它带来了那些便利 依我的看法,React hooks 主要解决了状态以及副作用难以复用的场景...zeit/swr标题:swr 04 如何使用 react hooks 实现一个计数器的组件 更多描述: 如何使用 react hooks 实现最简单一个计数器的组件为了保证最最简单化,不需要暂停与开始状态...,把第二个参数即依赖的状态,设置为 [] useEffect(callback, []) 15 如果使用 SSR,可以在 created/componentWillMount 中访问 localStorage...吗 不可以,created/componentWillMount 时,还未挂载,代码仍然在服务器中执行,此时没有浏览器环境,因此此时访问 localStorage 将会报错 16 react hooks...应用中如何排查性能问题 34 React 17.0 有什么变化 35 现代框架如 React、Vue 相比原生开发有什么优势 36 React/Vue 中的 router 实现原理如何 37 在 SSR 项目中如何判断当前环境时服务器端还是浏览器端

    1K30

    通过8个常用hook手把手教你封装hooks

    currentValue ) } return [value, toggleValue] } 通过代码能够看出这个 hook 的作用,本质就是进行状态的切换,你可以将其理解成一个 react...组件,也可以只是将其理解成一个函数,这个函数接受一个初始值,用 useState 进行状态的存储,通过函数 toggleValue 进行状态的切换,然后函数返回两个内容,一个是 当前的 value,一个是...toggleValue 函数,进行状态的切换,只不过组件返回的是一段 jsx 代码,这里返回的是一个数组 在使用方面就变的很简单了 export default function ToggleComponent...button onClick={() => toggleValue(false)}>Make False ) } useStorage 前端的数据存储离不开 localStorage...) { return useStorage(key, defaultValue, window.localStorage) } export function useSessionStorage(

    2.1K40

    同学,请专业点,用Hooks解耦UI组件吧

    为了减少重复请求,我决定使用LocalStorage缓存服务端数据。 这是否意味着同样的渲染逻辑要重复写n次呢?...JSON.parse(localStorage.getItem('someData')); const [someData, setSomeData] = useState(cachedData)...fetch('/some-data') .then(response => response.json()) .then(data => { localStorage.setItem...error } = useQuery(FETCH_SOME_DATA); return { someData: data, loading, error }; }; 每当我自愿(或被迫)修改数据请求/状态管理部分时...开发者不需要关心useSomeData的实现原理,只需要关注接收到的数据、加载状态、错误信息即可。 理论上来说,只要定义合适的接口,就能将UI从数据层解耦出来,并随时迁移到任何数据层上。 ?

    67320

    飞冰项目实现登录

    主要分为如下几点功能:前端提交登录后根据返回结果,设置用户的角色。...大致关系图如下:图片登录页面登录后,需要同步更新auth和localstorage里面存储的auth信息,而初始化函数也需要同步auth和localstorage,整个应用只有这两处需要同步,其余各处如果需要获取...auth信息可以直接使用useAuth来获取,但是在设置auth时,必须同步更新localstorage里面存储的权限信息。...要实现不同的权限看到不同的菜单,我这里设计了两套layout,在layout组件的useEffect里面获取auth,如果不符合当前角色的权限,则直接跳转到登录页面。...登录时除了同步auth和localstorage还需要根据不同的角色导航到相对应的layout对应的路由。以上便是使用飞冰框架搭建应用的一个小案例希望对你有所帮助。

    51810

    搭建前端监控,采集用户行为的 N 种姿势

    收集行为数据最基本的字段如下: app:应用的名称/标识 env:应用环境,一般是开发,测试,生产 version:应用的版本号 user_id:当前用户 ID user_name:当前用户名 page_route...获取用户信息 现代前端应用存储用户信息的方式基本都是一样的,localStorage 存一份,状态管理里存一份。因此获取用户信息从这两处的任意一处获得即可。这里简单介绍下如何从状态管理中获取。...最简单的方法,在函数 recordBehaviors() 所处的 js 文件中,直接导入用户状态: // 从状态管理里中导出用户数据 import { UserStore } from '@/stores...指定了上述默认值后,就可以从收集到的行为数据中判断出某个页面用户状态是否正常。...设置时间 行为数据中用两个字段 start_at、end_at 分别表示用户进入页面和离开页面的时间。

    1.3K20

    如何封装 cookielocalStoragesessionStorage hook?

    cookie ahooks 封装了 useCookieState,一个可以将状态存储在 Cookie 中的 Hook 。 该 hook 使用了 js-cookie[1] 这个 npm 库。...封装的代码并不复杂,先看默认值的设置,其优先级如下: 本地 cookie 中已有该值,则直接取。 设置的值为字符串,则直接返回。 设置的值为函数,执行该函数,返回函数执行结果。...将状态存储在 localStorage 和 sessionStorage 中的 Hook 。 两者的使用方法是一样的,因为官方都是用的同一个方法去封装的。...[8] 如何让 useEffect 支持 async...await?[9] 如何让定时器在页面最小化的时候不执行?...: https://juejin.cn/post/7107189225509879838 [9]如何让 useEffect 支持 async...await?

    1.1K10

    前端一面必会react面试题(持续更新中)

    useEffect 与 useLayoutEffect 的区别(1)共同点运用效果: useEffect 与 useLayoutEffect 两者都是用于处理副作用,这些副作用包括改变 DOM、设置订阅...React 会在执行当前 effect 之前对上一个 effect 进行清除。...useLayoutEffect:useLayoutEffect在浏览器渲染前执行useEffect在浏览器渲染之后执行当父组件引入子组件以及在更新某一个值的状态的时候,往往会造成一些不必要的浪费,而useMemo...,能让你得到一个根据最佳实践设置的项目模板。...它不但没有问题,而且如果根据以前的状态( state)以及属性来修改当前状态,推荐使用这种写法。redux有什么缺点一个组件所需要的数据,必须由父组件传过来,而不能像flux中直接从store取。

    1.7K20

    React 标签页组件 Tab

    内容面板:根据当前选中的标签项动态显示相应的内容。(二)状态管理为了实现标签之间的切换,我们需要维护一个状态变量来跟踪当前选中的标签。这可以通过React的状态管理机制(如useState)轻松实现。...Content for Tab 3 );}(三)逻辑错误初始状态设置不当如果没有正确初始化状态...确保在组件加载时设置合理的初始值。标签索引越界在处理动态添加或删除标签的情况下,需要特别注意索引的范围,避免出现越界错误。可以在状态更新时进行边界检查。...(二)持久化选择状态有时我们希望用户的标签选择能够跨页面刷新保存。可以利用浏览器的本地存储(localStorage)或会话存储(sessionStorage)来实现这一功能。...parseInt(storedActiveTab, 10) : 0);useEffect(() => { localStorage.setItem('activeTab', activeTab.toString

    15310
    领券