理解游戏规则的最简单方式,就是把自己当成游戏规则制定者
Client Components 必须写 'use client':
-
因为上帝懒得分析一个组件是不是用到了 onClick useState(虽然理论上可以),让 Client Components 在头顶举个牌最简单
-
更重要的是让开发者主动去界定 Client Components 的范围(如果框架自动处理的话,逻辑分割会很麻烦)
-
Server Components 就是服务端代码(只是用了 React 写法)
-
Server Components 中可以引入 Client Components,因为 client 可以使用 server 数据,比如
<C data={data} /> -
Client Components 中不能引入 Server Components,因为引入后就可能这么用
<S count={count} />,服务端代码是在服务器里,怎么能去引用本地的数据! -
但可以这么用
<C><S /></C>,这是因为children肯定没法引用到C中的本地数据(虽然理论上如果C中引入S,只写<S />,不传入任何 props,也可以分离两端,但还是那句话上帝懒得处理) -
Server Components 就是 PHP,Client Components 就是
<script></script>。Server Components 中可以引入 Client Components,因为 php 代码里可以写<script></script>。反之不行,因为<script></script>里不能写<?php ?> -
总之,server 包含 client,server 是 client 爹,client 是 server 子集,server to client 可以,不能逆转伦理!