Вы, может, какой-нибудь hello world туториал нагуглите и сами всё увидите?
Я понимаю, что при изучении новой области программирования бывает непонятно с чего начать, но ваши вопросы гуглятся за один запрос и в сети есть море уроков разного уровня требуемой подготовки и проработки темы.
Но вот если заменить "timer()" на timer, то всё работает. А строка выдаёт ошибку "timer is not a function". Странное поведение, интересно, чем оно вызвано?
Антон Спирин, а, ну да, у меня формулировка в этом плане неудачная. Я больше в качестве альтернативы скинул. Как правило, если начальное состояние зависит от пропсов, то нужно и за их изменениями следить тоже и тогда использовать getDerivedStateFromProps будет разумно. В коде из вопроса необходимости такой нет, но я предполагаю, что это всё-таки больше псевдокод, в котором выпилено многое из реального спора.
Антон Спирин, ну да, сейчас и начальное состояние и изменения пропсов обрабатываются одним методом. Я ж с этим не спорю. Но вы говорите, что начальное состояние в нём не задаётся, а это не так.
getDerivedStateFromProps is invoked after a component is instantiated as well as when it receives new props.
Таким образом, если начальное состояние зависит от пропсов, его нужно задавать не в конструкторе и не в свойстве класса, а именно в getDerivedStateFromProps — в этом весь смысл данного метода. Изменения пропсов тоже будут в нём отрабатываться и меньше вероятность что-то забыть.
А чтобы избежать проблемы "при каждом обновлении props будет обновляться state" нужно просто в методе соответствующие проверки добавить, опять же в документации и rfc этот момент описан.