LocalStorage не возвращает нужный элемент

Пишу веб-приложение по учёту финансов, использую React Hooks (useState, useEffect). Я новичок, не ругайтесь. В чём моя проблема: Ввожу число в input и по нажатию кнопки он должен запомнить и вывести в категорию это значение, но по нажатию логика не работает (просто стирает значение, становится пустой строкой). Но при вводе самого значения - отображается, нажимаю на кнопку - очищается и ничего не выводит. Описал как мог, прошу прощения, если есть неточности.

Кнопка + input

 <div className = 'wrapper2'>
        <input type = 'text' className = 'moneyInput' placeholder = 'Input money out' onChange = {(e) => setItem_rate(e.target.value)} value = {item_rate}/>
        <button className = 'enterMoney' onClick = {newRateItem}> ENTER </button>
      </div> 

Логика:

const [item_rate, setItem_rate] = useState('')
  const [items_rate, setItems_rate] = useState(
    JSON.parse(localStorage.getItem('items_rate')) || []
  )

  useEffect(() => {
   localStorage.setItem('items_rate', JSON.stringify(items_rate))
  }, [items_rate])

  const newRateItem = () => {
    if(!!item_rate) {
      const newRateItem = {
        id: v4(),
        item_rate: item_rate
      }
      setItems_rate((items_rate) => [...items_rate, newRateItem])
      setItem_rate('')
    } else {
      alert('money not enter')
      setItem_rate('')
    }
  } 

Вывод в ListGroup

 <ListGroup variant="flush">
    <ListGroup.Item>{`Exp: ${item_rate}$`}</ListGroup.Item>
    </ListGroup>

Ответы (0 шт):