Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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 使用setstate更改字典,但不工作。反应_Javascript_Reactjs_Dictionary_React Hooks_Use State - Fatal编程技术网

Javascript 使用setstate更改字典,但不工作。反应

Javascript 使用setstate更改字典,但不工作。反应,javascript,reactjs,dictionary,react-hooks,use-state,Javascript,Reactjs,Dictionary,React Hooks,Use State,这就是它的要点,我想根据traildays字符串中是否提到它来更改每天的真与假。事情的结局只是周六变为现实 我认为这与…天重置所有内容有关,但任何帮助都将不胜感激,谢谢。您是正确的,每个setter使用相同的天值,从const[days,setDays]覆盖其中的一个字段。请尝试方便的setDays格式(prevValue=>newValue)。作为参数,您将收到最新的模型状态,因此可以增量应用更改: const [days, setDays] = useState({ Monday: fal

这就是它的要点,我想根据
traildays
字符串中是否提到它来更改每天的真与假。事情的结局只是周六变为现实


我认为这与…天重置所有内容有关,但任何帮助都将不胜感激,谢谢。

您是正确的,每个setter使用相同的天值,从
const[days,setDays]
覆盖其中的一个字段。请尝试方便的
setDays格式(prevValue=>newValue)
。作为参数,您将收到最新的模型状态,因此可以增量应用更改:

const [days, setDays] = useState({ Monday: false, Tuesday: false,Wednesday: false,Thursday: false, Friday: false,Saturday: false,Sunday:false });

const [traildays, setTrialDays] = useState('MON,WED,THUR,SAT');

const Changedays = async () => { 
        if(traildays.includes('MON') == true) {setDays({...days,Monday:!days.Monday})}
        if(traildays.includes('TUE') == true) {setDays({...days,Tuesday:!days.Tuesday})}
        if(traildays.includes('WED') == true) {setDays({...days,Wednesday:!days.Wednesday})}
        if(traildays.includes('THUR') == true) {setDays({...days,Thursday:!days.Thursday})}
        if(traildays.includes('FRI') == true) {setDays({...days,Friday:!days.Friday})}
        if(traildays.includes('SAT') == true) {setDays({...days,Saturday:!days.Saturday})}
        if(traildays.includes('SUN') == true) {setDays({...days,Sunday:!days.Sunday})}

您是正确的,每个setter使用相同的天值,从
const[days,setDays]
并覆盖其中的一个字段。请尝试方便的
setDays格式(prevValue=>newValue)
。作为参数,您将收到最新的模型状态,因此可以增量应用更改:

const [days, setDays] = useState({ Monday: false, Tuesday: false,Wednesday: false,Thursday: false, Friday: false,Saturday: false,Sunday:false });

const [traildays, setTrialDays] = useState('MON,WED,THUR,SAT');

const Changedays = async () => { 
        if(traildays.includes('MON') == true) {setDays({...days,Monday:!days.Monday})}
        if(traildays.includes('TUE') == true) {setDays({...days,Tuesday:!days.Tuesday})}
        if(traildays.includes('WED') == true) {setDays({...days,Wednesday:!days.Wednesday})}
        if(traildays.includes('THUR') == true) {setDays({...days,Thursday:!days.Thursday})}
        if(traildays.includes('FRI') == true) {setDays({...days,Friday:!days.Friday})}
        if(traildays.includes('SAT') == true) {setDays({...days,Saturday:!days.Saturday})}
        if(traildays.includes('SUN') == true) {setDays({...days,Sunday:!days.Sunday})}

@udalmik说了什么,或者您可能希望将状态设置一次,以不进行任何不必要的重新渲染

if(traildays.includes('MON') == true) {
  setDays(prevDays => {
    return {...prevDays, Monday:!days.Monday};
  });
}

@udalmik说了什么,或者您可能希望将状态设置一次,以不进行任何不必要的重新渲染

if(traildays.includes('MON') == true) {
  setDays(prevDays => {
    return {...prevDays, Monday:!days.Monday};
  });
}

谢谢,伙计,工作完美谢谢,伙计,工作完美谢谢,那很有用谢谢,那很有用