Когда вы передаете функцию в useState
реагирует, оценивает эту функцию и устанавливает возвращаемое значение в качестве исходного состояния.и, следовательно, в вашем случае, во-первых, деструктурированная переменная bar
будет неопределенной, а во-вторых, Foo
будет возвращено как <div> Hello {bar}</div>
, а не как компонент React.
Также вам не следует устанавливать компонент вРеагировать состояние.Вместо этого просто определите их как функциональный компонент
const Foo = ({bar}) => <div> Hello {bar}</div> );
Если вообще в крайнем случае вы хотите сохранить компонент в состоянии, он будет работать как
const [Foo, setFoo] = useState(() => ({ bar }) => (
<div> Hello {bar}</div>
));
Рабочая демонстрация