首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何创建一个可重用的调用setUserContext的函数?React钩子useContext

如何创建一个可重用的调用setUserContext的函数?React钩子useContext
EN

Stack Overflow用户
提问于 2021-09-25 19:52:32
回答 1查看 91关注 0票数 1

所以我有4个组件,它们都在onClick处理程序中做同样的事情。

我必须在它们中的每一个中定义这个代码。

我不知道如何使其可重用的原因是,您不能在常规的非react实用函数中调用setUserContext。我试着创建一个钩子,但是你不能在onClick中使用钩子作为回调函数。

我在这里有什么选择?

代码语言:javascript
运行
AI代码解释
复制
  const { userContext, setUserContext } = useContext(UserContext);

  // this goes inside onClick and is defined in like 4 components (too much repetition)
  const favoriteItem = (e) => {
    e.stopPropagation();
    e.preventDefault();
    setUserContext({ ...userContext, favoriteItems: JSON.parse(localStorage.getItem("favoriteItems")) });
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-25 20:02:07

您可以创建自定义挂钩。

代码语言:javascript
运行
AI代码解释
复制
const useCustomHook = () => {


const { userContext, setUserContext } = useContext(UserContext);

  const favoriteItem = (event, game) => {
    e.stopPropagation();
    e.preventDefault();
    setUserContext({ ...userContext, favoriteItems: JSON.parse(localStorage.getItem("favoriteItems")) });
  }

return { favoriteItem } 
} 


export default useCustomHook;

您的组件可以做到这一点。

代码语言:javascript
运行
AI代码解释
复制
... 
const { favoriteItem } = useCustomHook() 

return (
<Element onClick={(event) => favoriteItem(event, game)} /> 
) 
... 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69331745

复制
相关文章
Logstash: 如何创建可维护和可重用的 Logstash 管道
Logstash 是一种开源数据处理管道,它从一个或多个输入中提取事件,对其进行转换,然后将每个事件发送至一个或多个输出。 一些 Logstash 实现可能具有多行代码,并且可能处理来自多个输入源的事件。 为了使此类实现更具可维护性,我将展示如何通过从模块化组件创建管道来提高代码的可重用性。
腾讯云大数据
2020/07/28
1.4K0
Logstash: 如何创建可维护和可重用的 Logstash 管道
在Vue中创建可重用的 Transition
Vue.js中的transition确实很棒。 毫无疑问,它们可以非常轻松地让应用程序栩栩如生,但是通常必须在每个项目中从头开始编写它们,甚至还需要引入animate.css之类的CSS库来使它们功能更强大。
前端小智@大迁世界
2020/06/04
9.9K0
在Vue中创建可重用的 Transition
c++钩子函数(react钩子函数)
Step1:创建win32动态链接库(an empty project DLL),命名为HookDLL
全栈程序员站长
2022/07/28
1.1K0
[译] 更可靠的 React 组件:组合及可重用性
原文摘自:https://dmitripavlutin.com/7-architectural-attributes-of-a-reliable-react-component/
江米小枣
2020/06/15
2.9K2
如何使用SASS编写可重用的CSS
Sass 是一个CSS预处理程序,至今使用广泛,它之所以流行,是因为它修复了几个CSS缺陷:
前端小智@大迁世界
2022/06/15
7.8K0
如何使用SASS编写可重用的CSS
react hooks api
hooks API是 React 16.8的"新增"功能(16.8更新于2年前)。官网是这么说的:
一粒小麦
2020/06/16
2.8K0
react hooks api
React-Hooks-useContext
useContext 是 React 中的一个 Hooks,它用于访问 React 上下文(Context),并允许您在函数组件中共享全局数据,避免了逐层传递 props 的麻烦。以下是关于 useContext 的简介:
杨不易呀
2023/10/01
2000
超性感的React Hooks(八)useContext
在context这个高级API出来之前,数据流向只能自上而下,从父组件一层一层的往下传递。如上图左。
用户6901603
2020/07/27
1.2K0
超性感的React Hooks(八)useContext
React常见面试题
动态加载(异步组件)加载时会有延迟,在延迟期间可以将一些内容展示给用户,比如:loading
隔壁老陈
2023/01/12
4.2K0
React常见面试题
超性感的React Hooks(九)useContext实践
我们利用useContext来实现这个小demo。在实现之前,复习一下相关比较重要的知识点。
用户6901603
2020/07/27
1.4K0
超性感的React Hooks(九)useContext实践
开发容器:可重用的开发环境
作者 | Avdi Grimm 译者 | 明知山 策划 | 丁晓昀 拿着 Chromebook 在洗车房做开发 那天,我把车开到了洗车场。这是一个高级洗车场,你把车交给工作人员,然后等着他们把车里里外外清洗干净。 我要做的就是打发时间了。我还有一些代码要写,但当时我只有一台装在包里的小 Chromebook 和 WiFi 连接。 于是,我在 GitHub Codespaces 中打开了这个项目,然后在上次停下的地方继续,在云端运行我的开发环境。 不只是编辑器,而是整个为我的项目定制的虚拟机。
深度学习与Python
2023/04/01
1.3K0
开发容器:可重用的开发环境
useTypescript-React Hooks和TypeScript完全指南
React v16.8 引入了 Hooks,它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。这些功能可以在应用程序中的各个组件之间使用,从而易于共享逻辑。Hook 令人兴奋并迅速被采用,React 团队甚至想象它们最终将替换类组件。
前端森林
2020/04/23
8.8K0
useTypescript-React Hooks和TypeScript完全指南
react 基础操作-语法、特性 、路由配置
在 React 函数组件中,组件的渲染是由状态(state)和属性(props)的变化触发的,而直接在函数组件中定义的变量并不会引起组件的重新渲染。
程序员王天
2023/10/18
4170
如何创建一个可复用的网页爬虫
网页爬虫是个非常有趣的玩具。不过不好玩的是,我们需要根据不同网页上的元素不断的调整自己的代码。这就是为什么我要着手实现一个更好的网页爬虫项目——通过该项目可以以最少的更改实现对新网页的爬取。
出其东门
2020/08/17
1.6K0
如何创建一个可复用的网页爬虫
6个React Hook最佳实践技巧
在过去,像状态和生命周期函数这样的 React 特性只适用于基于类的组件。基于函数的组件被称为哑(dumb)、瘦(skinny)或表示(presentational)组件,因为它们无法访问状态和生命周期函数。
深度学习与Python
2020/11/23
2.6K0
「React 手册 」如何创建函数组件?
大家好,在前面的几篇相关文章里,我们一起学习了如何使用类的方式声明组件,以及如何属性传值和处理本地数据状态,本篇文章我们一起学习如何使用函数的方式进行声明组件。
前端达人
2019/12/30
2.8K0
「React 手册 」如何创建函数组件?
可重用性的6个级别
这是有关级别的基本概述。我即将举行的课程“ 可重用组件 ”探讨了每个组件以及如何充分利用它们。
公众号---人生代码
2020/08/11
1.1K0
【React】生命周期和钩子函数
⚠️ 注意 :不能调用setState() 原因是render是每次组件渲染时触发的,如果在里面凋setState(),则组件数据发生变化,肯定要重新渲染,但是重新渲染又会触发render。就会形成死循环!!!
且陶陶
2023/10/16
3030
【React】生命周期和钩子函数
react 函数内部调用全局函数
错误信息 react TypeError: Cannot read property 'up' of undefined at 错误信息 react Unhandled Rejection (TypeError): Cannot read property 'setState' of undefined
wo.
2021/06/15
2.8K0
点击加载更多

相似问题

无效钩子调用- useContext - React

11

如何使可重用的react查询钩子?

18

带有React钩子的useContext

30

如何在React中创建可重用的函数

16

使用useContext导入函数会产生“usecontext钩子未明错误:无效钩子调用”

18
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档