saon
saon

Reputation: 751

What is the correct syntax for updating the state?

What is the proper way of updating the state using react-hook?

const [items, setItems]= useState([]];
const onChangeHandlers= (values)=> {
setItems({setItems:values})
}
const values = ['item1','item2','item3'];`

Upvotes: 0

Views: 1069

Answers (3)

Michael George
Michael George

Reputation: 248

You must have the function of changing the value

 1:  import React, { useState } from 'react';
 2:
 3:  function Example() {
 4:    const [count, setCount] = useState(0);
 5:
 6:    return (
 7:      <div>
 8:        <p>You clicked {count} times</p>
 9:        <button onClick={() => setCount(count + 1)}>
10:         Click me
11:        </button>
12:      </div>
13:    );
14:  }

Your example

   const [items, setItems] = useState([]);

   const onChangeHandlers= (values)=> {
   setItems(values)}};

Upvotes: 1

Thiago Skibinski
Thiago Skibinski

Reputation: 1

const [items, setItems] = useState([]);

const onChangeHandlers = values => {
    setItems(prevState => ([
        ...items,
        values
    ]);
};

const values = ['item1', 'item2', 'item3'];

Upvotes: 0

Shubham Khatri
Shubham Khatri

Reputation: 281736

A few important things to keep in mind while updating state via useState updater hook is

  1. The state updater doens't merge the state instead replaces the existing state with the new one
  2. State updater isn't aware of what name you give to state, in your case you call it items.

The correct way here to just pass in the new value as you would do while calling a normal function

const [items, setItems]= useState([]];
const onChangeHandlers= (values)=> {
   setItems(values)
}
const values = ['item1','item2','item3'];

Upvotes: 1

Related Questions