Javascript 更改每个和道具的状态值

Javascript 更改每个和道具的状态值,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,这是我在上下文中的状态, const [nav, setNav] = useState({ firstPage: "active", secondPage: "deactive", navState: [] }); 我从页面发送道具到这里, 我想把这些道具放到我的阵型中,如果这些道具在我的导航中,我也想让它们的值变为活动状态 我的道具成功添加到阵列中,但我不会更改它们的值。如何修复此问题不要在每次迭代中更新您的状态。首先将所有这些nav:val对添加到一个副本中。所有迭

这是我在上下文中的状态,

const [nav, setNav] = useState({
    firstPage: "active",
    secondPage: "deactive",
    navState: []
});
我从页面发送道具到这里, 我想把这些道具放到我的阵型中,如果这些道具在我的导航中,我也想让它们的值变为活动状态


我的道具成功添加到阵列中,但我不会更改它们的值。如何修复此问题

不要在每次迭代中更新您的状态。首先将所有这些nav:val对添加到一个副本中。所有迭代完成后,将该副本设置为您的状态

function(val){setNav({val:'active'})}
——我认为这并不像您可能认为的那样。作为函数参数提供的'val'实际上并没有进入您发送给
setNav
的对象。但是,我确实认为您可以这样做:
function(val){setNav({[val]:'active'})}
什么是“if(val in nav){”@TKoL u救救我,伙计,我错过了那个[]非常感谢你,你可以解释一下或任何参考资料,因为我是新的反应
const addNavi = (prop) => {

    let CurrentNavigation = nav.navState;

    if (!CurrentNavigation.includes(prop))
        CurrentNavigation.push(prop);

    setNav({ ...nav, navState: CurrentNavigation });

    CurrentNavigation.forEach(function (val) {
        if (val in nav) {
            setNav({ ...nav, val: "active" });
        }
    });
}