Javascript Checked已变为false
我是一个初学者,我对值是如何变化感到困惑,我附上了一个材质UI切换的屏幕截图 在此屏幕截图中Javascript Checked已变为false,javascript,reactjs,material-ui,Javascript,Reactjs,Material Ui,我是一个初学者,我对值是如何变化感到困惑,我附上了一个材质UI切换的屏幕截图 在此屏幕截图中setState({…state[event.target.name]:event.target.checked})在此代码中event.target.checked值来自 <Switch checked={state.checkedA} onChange={handleChange} name="checkedA"
setState({…state[event.target.name]:event.target.checked})
在此代码中event.target.checked
值来自
<Switch
checked={state.checkedA}
onChange={handleChange}
name="checkedA"
inputProps={{ 'aria-label': 'secondary checkbox' }}
/>
checked={state.checkedA}
来自state[state,setState]=React.useState({checkedA:true,})代码>
你是如何变得虚假的
我在这里有一个链接https://codesandbox.io/s/hjvt8?file=/demo.js:344-509
我有这些我从未在代码中使用过false的控制台,它是如何变为false的?
在三个控制台语句中,最后一个控制台显示“checked”而不是“checkedA”,“checkedA”仍然为真。我有控制台三个名称状态并已选中。checked是false我在代码中不使用false,当您使用Switch from Material UI时,它如何变成false,它的行为就像一个具有不同样式的HTML复选框
因此,当您切换时,它会将选中的值在true和false之间切换。在第14行,您可以从开关获取更新的检查值。如果您尝试切换两次。您将看到它将在true和false之间切换值的差异
我希望它能回答你的问题并消除困惑:)no我的截图下面的错误检查答案checked={state.checkedA}正如@nbokmans setState所述,setState是异步的,因此控制台语句的执行顺序与预期不符。setState
是异步的-这意味着如果您在不等待的情况下直接登录控制台(您不需要这样做),状态可能不会立即反映更改。我看不出沙箱中有什么问题,当我打开它时,开关打开。当您切换开关时,错误出现。如果你再试两次。它将在真与假之间切换。您正在更改第11行的状态和来自第20行的false(新值)。简而言之,开关将值更改为false。它的平均值已检查,是否为false值?从第20行开始,是的,它是一个更新的新值。因为您正在第11行更新状态。试着对第11行进行注释,并尝试一下