reactjs - uppdatera inbäddat tillståndsobjekt med array inuti


Jag har problem med att uppdatera mitt state-objekt som har en array av objekt inuti. Det finns några saker som jag har försökt men ingen av dem fungerade. Här är ett exempel på mitt state-objekt. Med exemplet nedan vill jag uppdatera värdena för test och test2 beroende på vad användaren skriver i inmatningsfältet. Kan någon guida mig i rätt riktning. Tack!

this.state = {
   someProperty: {
      someOtherProperty: [
          object in array: {
             test: true,
             test2: false
          },
          object in array: {
             test: true
             test2: false
          }
          ..
      ]
      ...
   }
   ...
}

Mitt försök att uppdatera värdet i objektet är som följer:

this.setState(prevState => ({
    ...prevState,
    someProperty: {
        ...prevState.someProperty,
        someOtherProperty: [
            ...prevState.someProperty.someOtherProperty, 
            test: false
        ]
    }
}))

Svar #1

Du kan skapa en array latestSomeOtherProperty, uppdatera det önskade indexet och sedan;

const latestSomeOtherProperty = someOtherProperty.map(prop=>{...prop, test: false}); // it updates all but you can put condition here

this.setState(prevState => ({
    ...prevState,
    someProperty: {
        ...prevState.someProperty,
        someOtherProperty: [
            ...latestSomeOtherProperty
        ]
    }
}))