请注意,问题与 useState 的异步性质无关。它是异步 的,在这里得到了很好的回答:useState set 方法不会立即反映变化请不要将其与那个混淆!我已经使用 useEffect 让按钮工作,正如在 codepen 中共享的那样
我的问题是我可以在主要组件中添加/包含任何异步函数吗?主组件:HelloWorld 子功能:interestShown => 这可以是异步的吗?在示例中,我使用 console.log 输出尽可能地简化了它。
这是一条可取的路线还是我在尝试一些奇怪的事情?
我曾尝试寻找解决此问题的方法,但我认为所有答案都将我引向课程,如果可能的话,我希望在 React 功能组件中实现这一点。
我已经定义了这样的状态:
const [interested, setInterested] = React.useState(false)
当我调用这个函数时:
function interestShown() {
console.log("Before Set State fired", interested)
setInterested(!interested)
console.log("After Set State Fired", interested)
}
状态更改后控制台日志需要显示更改后的状态,我无法做到这一点,我尝试了很多选项
我的问题在这个代码笔中:https ://codepen.io/deepeshkr/pen/PowQWwv
控制台日志输出:
pen.js:6 在设置状态触发之前为假
pen.js:8 After Set State Fired false => 这应该是真的,但我猜这是异步更改,这是我的问题,如何在状态更改后触发这个?
pen.js:14 Fire only it's true true
有类似的听起来问题,但我不确定他们问的问题与我问的问题相同,或者问题是否得到很好的解释以证明问题。