◆ 状態持たないと props から createElement で作ったオブジェクトを返す関数
  ◆ elm の view 関数みたいなイメージ
◆ コンポーネントというとなんか違うような

「コンポーネント」というと状態も管理してるイメージがあります
React だと状態を持たないコンポーネントも存在します

例えばこういう構造があったとします

<parent-elem>
<chld-elem></child-elem>
<chld-elem></child-elem>
<chld-elem></child-elem>
<chld-elem></child-elem>
</parent-elem>

child-elem が数値を持っていて parent-elem でその合計が欲しいとき コンポーネントだとこういうイメージです

const values = parent_elem.getChildElements().map(c => c.num)
console.log(values.reduce((a, b) => a + b)

子コンポーネントにアクセスしてそれぞれのプロパティを取り出してから計算してます
WebComponents だとこういう感じになります

しかし React の場合はコンポーネントそのものの実体が DOM 上にないのでこうはいかないです
一応 ref を使えば子コンポーネントの参照を保持できます
そこから 子コンポーネントの state にアクセスは可能です
しかし 準備がすごく面倒です
要素の数だけ ref をつくって render のところではプロパティとして渡す必要があります

それに 関数コンポーネントだと ref で参照は取れますが state が hook で扱いが違うので state の値は取り出せません
プライベートプロパティらしきものをたどれば一応取得できました (Preact で確認) が 内部的なものなのでアップデートで扱いが変わる可能性もあります

そういう問題があるので React だと親が子の state にアクセスするなら state を親側でもたせる作りが推奨されています

そうなると子コンポーネントは状態を持たないコンポーネントになります
その他 hook も使わない場合 コンポーネントは単純にプロパティから createElement で作るオブジェクトを返すだけの関数です
elm の view に使う関数と同じようなものです
elm では view は関数であって コンポーネントではないという扱いでその考えがしっくりくるので React のコンポーネントというのに違和感があります

アプリケーションの規模が大きくなるほどコンポーネント間で共有する state が増えて state は親へ親へと移動して 最終的に Redux など外部で state 管理することになれば コンポーネントは本当にコンポーネントなの?と思います