type
Post
status
Published
date
Mar 22, 2024
slug
summary
工作上遇到个问题,就是子组件调用父组件的函数时,父组件函数里的state数据不是最新的
tags
前端
category
技术分享
icon
password
URL
起因:
工作上遇到个问题,就是子组件调用父组件的函数时,父组件函数里的state数据不是最新的
如下代码
初始时

更新数据count值后

children调用的函数依然是旧的数据
原因
引起这个问题原因就是
闭包 闭包(closure)是一个函数以及其捆绑的周边环境状态(lexical environment,词法环境)的引用的组合。换而言之,闭包让开发者可以从内部函数访问外部函数的作用域。在 JavaScript 中,闭包会随着函数的创建而被同时创建。
react中函数组件,return的都是基于闭包的,比如本文中submit函数,它就是处于parentCompoent的函数之中,所以可以访问到内部属性,又因为useState的特性,会保存状态,所以每次函数更新都不会改变变量值,子函数调用submit时,这个submit还是最开始创建submit的闭包函数