name
кроме этого компонента больше нигде не используется, то можно стейт вообще не использовать. import React from 'react';
import { useParams } from "react-router-dom";
import { Helmet, HelmetProvider } from 'react-helmet-async';
const Film = () => {
const { film } = useParams();
return (
<div>
<Helmet>
<script src="..."></script>
<title>{`${ film } читать историю онлайн`}</title>
</Helmet>
<div id="block" data-id={`${ film }`}></div>
</div>
)
}
export default Film
name
, хранящийся в статусе, изменяется через специальный метод, именуемый у вас setName
. Если просто присвоить в name
значение, компонент перерисовываться не будет.setName
выполняется только при обновлении страницы. Больше не вижу ничего, что бы его вызывало для перерисовки компонента.
Если ItemPage это функциональный реакт-компонент, то его аргумент это props, т.е. атрибуты, которые передаются при использовании компонента. Если значение аргумента (в вашем случае id) это undefined, можно предположить, что при использовании компонента никаких атрибутов он не получает.
----
upd: или получает в id тот же undefined. В общем, искать нужно за пределами этого компонента.