Assigning a value to a list of items
I am trying to update each answer in a list so I can pass each answer to redux and send all the answers to an API.
I have tried to pass each answer as a variable and assign that to a state in an array. I am really confused by this.
const DATA = [{
id: '1',
title: 'Do you feel appropriately rewarded for your work?',
},
{
id: '2',
title: 'Are you happy with your working hours?',
},
{
id: '3',
title: 'Do you feel recognised when you do something well?',
},
{
id: '4',
title: 'Do you have enough information to do your job well?',
},
{
id: '5',
title: 'Do you have the resources you need to do your job well?',
},
{
id: '6',
title: 'Do you feel empowered to make decisions?',
},
];
const [data, setData] = useState('');
let newData = [...data];
const questionIndex = newData.findIndex((q, i) => q.id == idVariable);
if (questionIndex > -1) newData[questionIndex].answer = answerVariable;
const handleSubmit = () => {
navigation.navigate('SplashScreen')
setData(newData);
console.log("hey", newData)
}
Solution 1:
import React, { useEffect, useState } from "react";
const data = [{
id: '1',
title: 'Do you feel appropriately rewarded for your work?',
},
{
id: '2',
title: 'Are you happy with your working hours?',
},
{
id: '3',
title: 'Do you feel recognised when you do something well?',
},
{
id: '4',
title: 'Do you have enough information to do your job well?',
},
{
id: '5',
title: 'Do you have the resources you need to do your job well?',
},
{
id: '6',
title: 'Do you feel empowered to make decisions?',
},
];
Solution 2:
it should be like that, pelease try, as setState udate asych way to you will not get result immidieatly
const [questions, setQuestions] = useState(DATA)
const handleSubmit = () => {
setQuestions((prevState) => {
const questionIndex = prevState.findIndex((question) => question.id === idVariable)
if (questionIndex > -1) {
questions[questionIndex].answer = answerVariable;
}
return questions;
});
navigation.navigate('SplashScreen')
console.log("hey", newData)
}