Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Checked已变为false_Javascript_Reactjs_Material Ui - Fatal编程技术网

Javascript Checked已变为false

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"

我是一个初学者,我对值是如何变化感到困惑,我附上了一个材质UI切换的屏幕截图

在此屏幕截图中
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行进行注释,并尝试一下