首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >自定义钩子的状态不会在所有组件中更新吗?

自定义钩子的状态不会在所有组件中更新吗?
EN

Stack Overflow用户
提问于 2021-05-19 08:02:57
回答 1查看 300关注 0票数 0
代码语言:javascript
运行
AI代码解释
复制
import { useState } from 'react';

export default function usePrivacyMode() {
  const [isPrivacyOn, setIsPrivacyOn] = useState(false);

  return {
    isPrivacyOn,
    setIsPrivacyOn
  };
}

这是我定制的钩子。我在PrivacyIcons组件中设置状态,然后使用isPrivacyOn根据值显示/隐藏表中的值。但是在一个不同的组件中,isPrivacyOn不会改变,它只在PrivacyIcons中改变?为什么我不能在一个组件中更改它,然后在所有组件中使用该值?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-08-04 05:06:05

状态并不意味着在组件之间共享。您正在寻找useContext。这允许您在组件之间共享函数和状态。React在官方文档中有一个关于如何做到这一点的很好的教程:https://reactjs.org/docs/hooks-reference.html#usecontext

对于您的特定示例,它将如下所示:

你的App.js

代码语言:javascript
运行
AI代码解释
复制
import { useState } from 'react';

export const PrivacyContext = createContext([]);

const App = (props) => {
   const [isPrivacyOn, setIsPrivacyOn] = useState(false); 
   return (
       <PrivacyContext.Provider value={[isPrivacyOn, setIsPrivacyOn]}>
           <ComponentUsingPrivacyContext />
           {props.children}
       </PrivacyContext.Provider>
   );
};

export default App;

请记住,任何想要访问上下文组件都必须是PrivacyContext的子级

任何想要使用PrivacyContext的组件:

代码语言:javascript
运行
AI代码解释
复制
import React, { useContext } from "react";
import {PrivacyContext} from "...your route";

const ComponentUsingPrivacyContext = (props) => {
    const  [isPrivacyOn, setIsPrivacyOn] = useContext(PageContext);
    return (
          <button onclick={setIsPrivacyOn}>
             Turn Privacy On
          </button>
          <span>Privacy is: {isPrivacyOn}</span>
     );
};
export default ComponentUsingPrivacyContext;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67599182

复制
相关文章
concent 骚操作之组件创建&状态更新
随着react 16.8发布了稳定版本的hook特性,原来官网文档里对SFC的描述也修改为了FC,即无状态函数组件变更为了函数组件,官方代言人Dan Abramov也在各种场合开始向社区力推hook,将其解读为下一个5年React与时俱进的开端。
腾讯新闻前端团队
2019/11/03
9190
concent 骚操作之组件创建&状态更新
自定义Androidk全量更新组件
  自动更新功能对于一个APP来说是必备的功能,特别是对于未投放市场下载的APP,每次都让用户删掉原来的,再下载新的版本,肯定是不合适的。
饮水思源为名
2018/09/06
1.2K0
Django学习笔记之form组件的局部钩子和全局钩子
本文通过注册页面的form组件,查看其中使用的全局钩子和局部钩子。 # Create your views here. class RegForm(forms.Form): username = forms.CharField( min_length=3, label="用户名", help_text=‘‘, error_messages={ "required": "不能为空", "in
Jetpropelledsnake21
2018/08/01
1K0
Django学习笔记之form组件的局部钩子和全局钩子
element之upload组件钩子函数中传参
在一个list中使用,每个item中都要使用upload,但是在文档中没有关于这些上传的钩子函数怎么传递自定义参数,后来在文档中尝试给钩子函数传参 实例中只是 写了一个固定的参数,其实在使用中可以穿入每个item的标识,比如 index等,这样就能与数据里的每个item对应起来
天天_哥
2019/02/25
7550
element之upload组件钩子函数中传参
(五)在组件中访问状态
一、在组件中访问状态 store.js import { ref, computed } from 'vue' import { defineStore } from 'pinia' export const useNoteStore = defineStore('note', () => { const noteList = ref([ { // ... } ]) return { noteList
老怪兽
2023/02/22
1.7K0
Flutter中StatefulWidget有状态组件
在 Flutter 中自定义组件其实就是一个类,这个类需要继承 StatelessWidget/StatefulWidget。
越陌度阡
2020/12/23
6420
Flutter中StatefulWidget有状态组件
vuejs中缓存组件状态-keepAlive
在 vuejs中,我们经常需要缓存一些组件的状态,比如用户登录后,切换到其他页面,再切换回来,需要保留之前的登录状态,而不是重新登录。
itclanCoder
2023/10/01
2400
vuejs中缓存组件状态-keepAlive
JavaScript中的钩子(钩子机制\钩子函数\hook)是什么?
我们前端的JavaScript中,经常提到钩子,毋庸置疑,那这个东西肯定也尤为重要。
JanYork_简昀
2022/05/26
2.2K0
Vue组件中的生命周期钩子函数有哪些?
Vue 组件中的生命周期钩子函数可以分为三个主要阶段: 创建阶段、更新阶段和销毁阶段。
王小婷
2023/09/02
3870
element之upload组件钩子函数中传参
在一个list中使用,每个item中都要使用upload,但是在文档中没有关于这些上传的钩子函数怎么传递自定义参数,后来在文档中尝试给钩子函数传参 实例中只是 写了一个固定的参数,其实在使用中可以穿入每个item的标识,比如 index等,这样每个item就能与数据里的list对应起来
天天_哥
2019/01/06
1.6K0
element之upload组件钩子函数中传参
Flutter更新showDialog以及showModalBottomSheet中的状态中的内容
很多人在使用 showDialog 或者 showModalBottomSheet 的时候,都会遇到这个问题:通过 setState 方法无法更新当前的dialog。
拉维
2019/10/14
9.2K1
Ceph组件的状态
client 无法链接mon的可能原因 1.连通性和防火墙规则。在MON主机上修改允许TCP 端口6789的访问。 2.磁盘空间。每个MON主机上必须有超过5%的空闲磁盘空间使MON和levelDB数据库正常工作。 3.MON没有工作或者离开选举,检查如上命令输出结果中的quorum_status和mon_status或者ceph -s 的输出来确定失败的MON进程,尝试重启或者部署一个新的来替代它。
院长技术
2020/06/11
1.3K0
【Flink】【更新中】状态后端和checkpoint
有状态的计算是流处理框架要实现的重要功能,因为稍复杂的流处理场景都需要记录状态,然后在新流入数据的基础上不断更新状态。下面的几个场景都需要使用流处理的状态功能:
zeekling
2023/09/06
5170
【Flink】【更新中】状态后端和checkpoint
有状态的计算是流处理框架要实现的重要功能,因为稍复杂的流处理场景都需要记录状态,然后在新流入数据的基础上不断更新状态。下面的几个场景都需要使用流处理的状态功能:
zeekling
2023/10/17
6310
【Flink】【更新中】状态后端和checkpoint
React自定义hook之useMountedRef返回组件的挂载状态
useRef 返回一个可变的 ref 对象,其 .current 属性被初始化为传入的参数(initialValue)。返回的 ref 对象在组件的整个生命周期内保持不变。
henu_Newxc03
2022/05/19
9650
react 中组件状态的一些理解
当一个html标签的值依赖于state的值得时候,如果state的值没有更新时,这个标签的值无论如何也是不会更新的。
全栈程序员站长
2021/04/07
1.4K0
如何在Vue组件中访问Vuex store中的状态?
在Vue组件中访问Vuex store中的状态,可以通过计算属性 (computed properties) 或者直接通过$store.state来实现。
王小婷
2023/10/02
4850
React技巧1(状态组件与无状态组件的使用)
本教程总共5篇,每日更新一篇,请关注我们!你可以进入历史消息查看以往文章,也敬请期待我们的新文章! 1.React 技巧1(状态组件与无状态组件的使用) ----2018.01.04 2.React 技巧2(避免无意义的父节点)----2018.01.05 3.React 技巧3(如何优雅的渲染一个List)----2018.01.06 4.React 技巧4(如何处理List里面的Item)----2018.01.07 5.React 技巧5(TodoList实现)----2018.01.08 开发环境
前端人人
2018/04/11
1.8K0
React技巧1(状态组件与无状态组件的使用)
Mutation状态更新
Mutation中的处理方式是将整个commit的对象作为payload使用, 所以代码没有改变, 依然如下:
Qwe7
2022/05/31
6390
React的无状态和有状态组件
众所周知,React是一个专注于View层的前端框架,组件也】是React核心理念之一,一个完整的应用将由一个个独立的组件拼装而成,组件也是React最基础的一部分,学习React就需要先学习组件。
xiangzhihong
2022/11/30
1.5K0

相似问题

React不会在自定义钩子中的状态更新中重新呈现所有组件。

32

自定义钩子状态更新不重新呈现组件。

111

如何用已在自定义钩子中更新的状态更新父组件?

11

React钩子状态-不更新组件

24

不使用自定义钩子更新的组件本地状态

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文