Состояния рефакторинга с помощью крючков

#reactjs #react-hooks

Вопрос:

Я пытаюсь рефакторинговать простой код с жестко заданным начальным состоянием, но я новичок в реагировании на крючки.

 const TimersDashboard = () => {
  const [timers, timersChange] = useState(0)


  React.state = {
    timers: [
      {
        id: UUID.v4(),
        activity: 'Testing activity',
        description: 'Lorem ipsum kraf maga',
        elapsed: '0',
        runningSince: Date.now(),
      },
      {
        id: UUID.v4(),
        activity: 'Next activity',
        description: 'Lorem ipsum kung fu',
        elapsed: '0',
        runningSince: Date.now(),
      }
    ]
  }

  return (
    <div className='ui three column centered grid'>
      <div className='column'>
        <TimersList
          timers={this.state.timers} 
        />
        <NewTimerTool
          isOpen={false}
        />
      </div>    
    </div>
  );
}
 

У меня проблема с переписыванием начального состояния с помощью крючков.

Ответ №1:

Вы используете функциональный компонент, поэтому вы можете использовать только крючки. React.state предназначен только для компонентов класса. Если вы хотите, чтобы ваше внутреннее состояние React.state инициализировало его следующим образом

 const [timers, setTimers] = useState([
  {
    id: UUID.v4(),
    activity: "Testing activity",
    description: "Lorem ipsum kraf maga",
    elapsed: "0",
    runningSince: Date.now(),
  },
  {
    id: UUID.v4(),
    activity: "Next activity",
    description: "Lorem ipsum kung fu",
    elapsed: "0",
    runningSince: Date.now(),
  },
]);
 

В списке таймеров просто получите значения состояния использования, как это <TimersList timers={timers}/> .

Комментарии:

1. О, вот оно что! Спасибо!

2. Подумайте о том, чтобы принять мой ответ, если он вам помог.