Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >componentDidMount等价于一个反应函数/钩子组件?

componentDidMount等价于一个反应函数/钩子组件?
EN

Stack Overflow用户
提问于 2018-12-27 05:18:44
回答 11查看 155.8K关注 0票数 262

有什么方法可以通过钩子来模拟componentDidMount在功能组件中的反应?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2019-02-12 09:22:29

对于钩子的稳定版本( 16.8.0+)

对于componentDidMount

代码语言:javascript
运行
AI代码解释
复制
useEffect(() => {
  // Your code here
}, []);

对于componentDidUpdate

代码语言:javascript
运行
AI代码解释
复制
useEffect(() => {
  // Your code here
}, [yourDependency]);

对于componentWillUnmount

代码语言:javascript
运行
AI代码解释
复制
useEffect(() => {
  // componentWillUnmount
  return () => {
     // Your code here
  }
}, [yourDependency]);

因此,在这种情况下,需要将依赖项传递到这个数组中。假设你有这样的状态

const [count, setCount] = useState(0);

每当计数增加时,您都希望重新呈现函数组件。那么您的useEffect应该是这样的

代码语言:javascript
运行
AI代码解释
复制
useEffect(() => {
  // <div>{count}</div>
}, [count]);

这样,每当计数更新时,组件就会重新呈现。希望这能有所帮助。

票数 516
EN

Stack Overflow用户

发布于 2020-11-26 06:11:28

componentDidMount 在反应钩子中没有完全等价的。

在我的经验中,requires在开发时需要一种不同的心态,一般来说,您不应该将它与类方法(如componentDidMount )进行比较。

尽管如此,有一些方法可以使用钩子来产生与componentDidMount类似的效果。

解决方案1:

代码语言:javascript
运行
AI代码解释
复制
useEffect(() => {
  console.log("I have been mounted")
}, [])

解决方案2:

代码语言:javascript
运行
AI代码解释
复制
const num = 5

useEffect(() => {
  console.log("I will only run if my deps change: ", num)
}, [num])

解决方案3(有函数):

代码语言:javascript
运行
AI代码解释
复制
useEffect(() => {
  const someFunc = () => {
    console.log("Function being run after/on mount")
  }
  someFunc()
}, [])

解决方案4 (useCallback):

代码语言:javascript
运行
AI代码解释
复制
const msg = "some message"

const myFunc = useCallback(() => {
  console.log(msg)
}, [msg])

useEffect(() => {
  myFunc()
}, [myFunc])

解决方案5(不断创新):

代码语言:javascript
运行
AI代码解释
复制
export default function useDidMountHook(callback) {
  const didMount = useRef(null)

  useEffect(() => {
    if (callback && !didMount.current) {
      didMount.current = true
      callback()
    }
  })
}

值得注意的是,只有当其他解决方案都不适用于用例时,才能真正使用解决方案5。如果您确实决定需要解决方案5,那么我建议您使用这个预制钩子使用

源(有更多详细信息):componentDidMount在反应钩中的应用

票数 35
EN

Stack Overflow用户

发布于 2018-12-29 15:09:38

函数组件上没有componentDidMount,但是React提供了一种通过使用useEffect钩子来模拟行为的方法。

将一个空数组作为第二个参数传递给useEffect(),以便只在挂载上运行回调。

请阅读useEffect

代码语言:javascript
运行
AI代码解释
复制
function ComponentDidMount() {
  const [count, setCount] = React.useState(0);
  React.useEffect(() => {
    console.log('componentDidMount');
  }, []);

  return (
    <div>
      <p>componentDidMount: {count} times</p>
      <button
        onClick={() => {
          setCount(count + 1);
        }}
      >
        Click Me
      </button>
    </div>
  );
}

ReactDOM.render(
  <div>
    <ComponentDidMount />
  </div>,
  document.querySelector("#app")
);
代码语言:javascript
运行
AI代码解释
复制
<script src="https://unpkg.com/react@16.7.0-alpha.0/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16.7.0-alpha.0/umd/react-dom.development.js"></script>

<div id="app"></div>

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53945763

复制
相关文章
「React 基础」组件生命周期函数componentDidMount()介绍
大家好,今天我们将通过一个实例——番茄计时器,学习下如何使用函数生命周期的一个重要函数componentDidMount():componentDidMount()在组件加载完成, render之后进行调用,只会执行一次。
前端达人
2020/02/03
1.7K0
「React 基础」组件生命周期函数componentDidMount()介绍
「React 基础」组件生命周期函数componentDidMount()介绍
大家好,今天我们将通过一个实例——番茄计时器,学习下如何使用函数生命周期的一个重要函数componentDidMount():在组件加载完成, render之后进行调用,只会执行一次。
前端达人
2020/02/17
1.5K0
Angular核心-组件的生命周期函数钩子函数
angular手册地址: https://angular.cn/guide/lifecycle-hooks Angular中的组件的生命周期钩子函数调用顺序:
用户9857551
2022/06/28
9660
java钩子函数(javasocket钩子)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/129280.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/29
8290
c++钩子函数(react钩子函数)
Step1:创建win32动态链接库(an empty project DLL),命名为HookDLL
全栈程序员站长
2022/07/28
1.1K0
element之upload组件钩子函数中传参
在一个list中使用,每个item中都要使用upload,但是在文档中没有关于这些上传的钩子函数怎么传递自定义参数,后来在文档中尝试给钩子函数传参 实例中只是 写了一个固定的参数,其实在使用中可以穿入每个item的标识,比如 index等,这样就能与数据里的每个item对应起来
天天_哥
2019/02/25
7570
element之upload组件钩子函数中传参
element之upload组件钩子函数中传参
在一个list中使用,每个item中都要使用upload,但是在文档中没有关于这些上传的钩子函数怎么传递自定义参数,后来在文档中尝试给钩子函数传参 实例中只是 写了一个固定的参数,其实在使用中可以穿入每个item的标识,比如 index等,这样每个item就能与数据里的list对应起来
天天_哥
2019/01/06
1.6K0
element之upload组件钩子函数中传参
钩子函数
应用目录下创建middlewares包目录,每个功能实现以个中间件(每个功能是一个py文件)
星哥玩云
2022/09/14
4350
在一个组件中使用多个useEffect钩子
在一个组件中使用多个useEffect钩子。React Hooks允许在组件中使用任意数量的useEffect钩子来处理不同的副作用操作或监听不同的触发时机。
王小婷
2023/09/17
9220
C++ 自由存储区是否等价于堆?
“free store” VS “heap” 当我问你C++的内存布局时,你大概会回答: “在C++中,内存区分为5个区,分别是堆、栈、自由存储区、全局/静态存储区、常量存储区”。 如果我接着问你自由存储区与堆有什么区别,你或许这样回答: “malloc在堆上分配的内存块,使用free释放内存,而new所申请的内存则是在自由存储区上,使用delete来释放。” 这样听起来似乎也没错,但如果我接着问: 自由存储区与堆是两块不同的内存区域吗?它们有可能相同吗? 你可能就懵了。 事实上,我在网上
Tencent JCoder
2018/07/02
3.5K0
钩子函数介绍(vue11个钩子函数)
钩子(hook)又称钩子函数,是在一个有序的周期中的某些特殊时刻,系统内部预先设置好的函数,当系统周期到达指定时刻 会自动执行该’钩子’。钩子函数的函数体内容由开发者编写,这绐了幵发者在不同阶段做某些处理的机会。
全栈程序员站长
2022/07/28
6120
vue钩子函数
目前实现的功能是进入页面点击查询按钮向服务端表求查询,实际的需求是进入页面立即查询。
周杰伦本人
2022/10/25
3490
vue钩子函数
JavaScript中的钩子(钩子机制\钩子函数\hook)是什么?
我们前端的JavaScript中,经常提到钩子,毋庸置疑,那这个东西肯定也尤为重要。
JanYork_简昀
2022/05/26
2.2K0
React hooks实践
最近要对旧的项目进行重构,统一使用全新的react技术栈。同时,我们也决定尝试使用React hooks来进行开发,但是,由于React hooks崇尚的是使用(也只能使用)function component的形式来进行开发,而不是class component,因此,整个开发方式也会与之前产生比较大的差异。所以,我这里就积累了下实际项目中遇到的问题以及思考,看下能不能帮助大家少走弯路。
嘿嘿嘿
2019/02/26
1.4K0
Vue组件中的生命周期钩子函数有哪些?
Vue 组件中的生命周期钩子函数可以分为三个主要阶段: 创建阶段、更新阶段和销毁阶段。
王小婷
2023/09/02
3880
详解React组件生命周期
最近一直在学vue和nodejs,想着React这块儿也不能太久不用忘记了,写篇博客来解决一下我当时初学React时的痛点,生命周期。
henu_Newxc03
2021/12/26
2K0
[译] 对比 React Hooks 和 Vue Composition API
原文:https://dev.to/voluntadpear/comparing-react-hooks-with-vue-composition-api-4b32
江米小枣
2020/06/15
6.7K0
前端一面经典react面试题(边面边更)
路由匹配是通过比较 <Route> 的 path 属性和当前地址的 pathname 来实现的。当一个 <Route> 匹配成功时,它将渲染其内容,当它不匹配时就会渲染 null。没有路径的 <Route> 将始终被匹配。
beifeng1996
2022/11/18
2.3K0
React---组件的生命周期
2. 更新阶段: 由组件内部this.setSate()或父组件重新render触发
半指温柔乐
2021/04/22
1K0
钩子函数是什么?(函数那个小钩子哪里调出来)
先来看一段百科:钩子函数是Windows消息处理机制的一部分,通过设置“钩子”,应用程序可以在系统级对所有消息、事件进行过滤,访问在正常情况下无法访问的消息。钩子的本质是一段用以处理系统消息的程序,通过系统调用,把它挂入系统。
全栈程序员站长
2022/07/28
4800

相似问题

不工作于反应钩子反应的ScrollToBottom函数

15

反应组件抽象混乱(componentDidMount)

10

tweenMax.to不工作于反应componentDidMount

12

反应等价于ng模型

45

用钩子和类组件反应函数组件

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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