React的特点

image.png
Vue一开始是依赖宿主环境的(后来拆分了,core中就不依赖了),React从一开始就不依赖所以它桌面应用移动端发展的不错

传递元素内容

  1. 作为prop.xxx传递
  2. props.children拿到

本质就是语法糖

如果要传递多组呢?

通过不同的属性传递呗

是否使用一个技术的根本原因是什么

是否用一个技术的根本原因是:看ROI—投入产出比,能否赚更多的钱(这些就会牵扯出大量的非技术原因)

SSR

优势:

  1. 有利于SEO
  2. 首屏等待时间更短,对用户体验更好

    劣势:

  3. 服务器压力大

  4. 开发成本高,要兼容前后端的runtime
  5. 更复杂的构建和配置

React 常见的性能优化方式

  1. 1)使用生产环境版本的库<br /> 2)虚拟长列表<br /> 3)避免不必要的组件渲染<br /> 4)使用key

ReactElement、ReactNode以及JSX.Element

  1. interface PreProcessorProps {
  2. error?: boolean | BooleanFunction
  3. loading?: boolean | BooleanFunction
  4. children: React.ReactNode | RenderFunction
  5. }
  6. }
  7. const PreProcessor: React.FC<PreProcessorProps> = ({ children }) => {
  8. // ....
  9. return children
  10. }

在使用ts写React时,尴尬的遇到了这个错误

  1. 不能将类型“({ error, loading, children }: PropsWithChildren<PreProcessorProps>) => {} | null | undefined”分配给类型“FC<PreProcessorProps>”。
  2. 不能将类型“{} | null | undefined”分配给类型“ReactElement<any, any> | null”。
  3. 不能将类型“undefined”分配给类型“ReactElement<any, any> | null”。

无奈之下,只好看源代码来分析ReactNode和ReactElement的区别。

  1. interface ReactElement<
  2. P = any,
  3. T extends string | JSXElementConstructor<any> =
  4. | string
  5. | JSXElementConstructor<any>
  6. > {
  7. type: T
  8. props: P
  9. key: Key | null
  10. }

ReactElement是一个接口,包含type,props,key三个属性值。该类型的变量值只能是两种: null 和 ReactElement实例

  1. type ReactText = string | number;
  2. type ReactChild = ReactElement | ReactText;
  3. interface ReactNodeArray extends Array<ReactNode> {}
  4. type ReactFragment = {} | ReactNodeArray;
  5. type ReactNode = ReactChild | ReactFragment | ReactPortal | boolean | null | undefined;

ReactNode是一种联合类型(Union Types),可以是string、number、ReactElement、{}、boolean、ReactNodeArray。由此可以看出ReactElement类型的变量可以直接赋值给ReactNode类型的变量,但是反过来是不行的。

  1. namespace JSX {
  2. // ...
  3. interface Element extends React.ReactElement<any, any> { }
  4. // ...
  5. }

JSX.Element是ReactElement的子类型,并且没有增加属性,二者是兼容的。也就是说JSX.Element类型的变量可以赋值给ReactElement类型的变量,反过来赋值也成立。
综合上面所述:
JSX.Element ≈ ReactElement ⊂ ReactNode

React如何优化性能

image.png

Vue3有哪些改进

image.png

js异步与事件循环的理解

image.png

get与post请求

image.png

css居中方式

image.png

经典脑瘫题。让我展开讲,能跟你扯一小时

也可以先提OS,中断,调度啥的。。
image.png