I have an input that allows users to enter there name and a number, and this is displayed in a list. I am now trying to add these numbers into an array so I can stop duplicate ones from being added.
I think I'm close to a solution as I have the numbers being saved into my variable, however the issue I'm having is that only one number is being saved - and then gets overwritten whenever a new input value is entered. They should all get added into the same array.
const [name, setName] = useState('');
const [number, setNumber] = useState('');
const [assigned, takenNumber] = useState([]);
//
// Handle adding players to the game
function handleChange(event) {
setName(event.target.value);
}
function handleNumber(event) {
setNumber(event.target.value);
}
function handleAdd() {
dispatchListData({ type: 'ADD_ITEM', name, number, id: uuidv4() });
setName('');
setNumber('');
// Save all numbers in an array
const numbersArray = [assigned];
numbersArray.push(number);
takenNumber(numbersArray);
console.log(numbersArray);
}
//
// Add players to game form
const AddItem = ({ number, name, onChange, onNumber, onAdd }) => (
<form>
<input type="text" value={name} onChange={handleChange} />
<input type="number" value={number} onChange={handleNumber} min="1" max="20" />
<button type="button" onClick={handleAdd}>
Add
</button>
</form>
);

const numbersArray = [assigned];meant to beconst numbersArray = [...assigned];? Otherwise every update nests the existing data inside another array.