为什么这个状态要等到另一个状态更新或快速刷新后才会更新? - 反应/NextJS
P粉232793765
P粉232793765 2023-09-08 15:09:10
0
1
365

编辑:下一个版本是 13.3.0

我有一个名为 localArray 的状态,我只想更新到特定索引,因此我想到创建一个时间变量来修改该数组并使用时间值更新状态,问题是,这个状态直到另一个状态更新或快速刷新后才会更新,我不知道为什么会发生这种情况

这是一个最小的可重现示例:

import { useState } from 'react'

function Test() 
{
    const [someState, setSomeState] = useState("");
    const [localArray, setLocalArray] = useState(["","","",""])

    const handleArrayChanges = ( { target: { name, value } } ) => {
        let newArray = localArray;
        newArray[Number(name)] = value;
        setLocalArray(newArray);
    }

    return (
        <div>
            <h4>Array state</h4>
            <textarea name='0' onChange={handleArrayChanges}/>
            <p> {localArray[0]}</p>

            <h4>Some other state</h4>
            <button onClick={() => {setSomeState("a")}}>Update some other state</button>
        </div>
      )
}

export default Test

正如您所看到的,在数组状态更新后,第一个元素应该显示在段落上,但直到解释了顺式情况才显示

P粉232793765
P粉232793765

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!