Javascript “材质ui”单选按钮选择reactjs中的上一个按钮值

Javascript “材质ui”单选按钮选择reactjs中的上一个按钮值,javascript,reactjs,material-ui,Javascript,Reactjs,Material Ui,我已经将单选按钮组添加到应用程序中。这里的问题是,当我尝试记录值时,我得到的是上一个单选按钮的值,而不是当前按钮的值。 假设当我点击go from all to waitived时,这会记录所有内容。 我不知道是什么导致了这个问题 我的代码 使用useState钩子提供的更新程序进行的状态更新是异步的,不会立即反映 尝试使用useEffect钩子读取值: useEffect(() => { console.log(radioValue) }, [radioValue]) 使用useS

我已经将单选按钮组添加到应用程序中。这里的问题是,当我尝试记录值时,我得到的是上一个单选按钮的值,而不是当前按钮的值。 假设当我点击go from all to waitived时,这会记录所有内容。 我不知道是什么导致了这个问题

我的代码


使用useState钩子提供的更新程序进行的状态更新是异步的,不会立即反映

尝试使用useEffect钩子读取值:

useEffect(() => {
  console.log(radioValue)
}, [radioValue])

使用useState钩子提供的更新程序进行的状态更新是异步的,不会立即反映

尝试使用useEffect钩子读取值:

useEffect(() => {
  console.log(radioValue)
}, [radioValue])
你需要知道:

setState操作是异步的,并且为提高性能而成批执行。setState的文档中对此进行了解释

但是为什么呢? setState更改状态并导致重新招标。这可能是一个昂贵的操作,使其同步可能会使浏览器没有响应

因此,setState调用是异步的,并且是批处理的,以获得更好的UI体验和性能

如果我在设置状态后需要做些什么呢

如果您有一个React类组件,您可以在setState回调中执行所需的操作,如下所示:

this.setState(newState, function(){
   // Do what it needs to be done after updating newState here
});
useEffect(() => {
  // Do what it needs to be done after updating state here
}, [radioValue])
如果您有一个React功能组件,您需要使用useEffect钩子监听状态更改,并在useEffect中执行您需要的操作,如下所示:

this.setState(newState, function(){
   // Do what it needs to be done after updating newState here
});
useEffect(() => {
  // Do what it needs to be done after updating state here
}, [radioValue])
你需要知道:

setState操作是异步的,并且为提高性能而成批执行。setState的文档中对此进行了解释

但是为什么呢? setState更改状态并导致重新招标。这可能是一个昂贵的操作,使其同步可能会使浏览器没有响应

因此,setState调用是异步的,并且是批处理的,以获得更好的UI体验和性能

如果我在设置状态后需要做些什么呢

如果您有一个React类组件,您可以在setState回调中执行所需的操作,如下所示:

this.setState(newState, function(){
   // Do what it needs to be done after updating newState here
});
useEffect(() => {
  // Do what it needs to be done after updating state here
}, [radioValue])
如果您有一个React功能组件,您需要使用useEffect钩子监听状态更改,并在useEffect中执行您需要的操作,如下所示:

this.setState(newState, function(){
   // Do what it needs to be done after updating newState here
});
useEffect(() => {
  // Do what it needs to be done after updating state here
}, [radioValue])

有什么解决办法吗?有什么解决办法吗?