前端前端
fabric
算法
jsBlock
styleBlock
工具其他
Vue、React相关
canvas
webgl
GitHub
fabric
算法
jsBlock
styleBlock
工具其他
Vue、React相关
canvas
webgl
GitHub
  • 1_common
  • 2_react
  • eslint
  • git
  • jenkins
  • linux
  • make
  • Markdown基本写法
  • mysql安装
  • nginx
  • node安装
  • php安装
  • rabbitMQ
  • typescript
  • vuepress搭建

题目

1、什么是 React

React 是一个开源前端 JavaScript 库,用于构建用户界面,尤其是单页应用程序

  • 使用 VirtualDOM
  • 支持服务端渲染
  • 单向数据流
  • 使用可复用/可组合的 UI 组件开发视图

2、什么是 JSX

类似 XML 的语法扩展,jsx 通过 @babel/preset-react 转换成js代码

// .babelrc
// React.createElement
{
  "presets": [
    ["@babel/preset-react", {
      "runtime": "classic"
    }]
  ]
}


// .babelrc
// JSX runtime 更有效的 tree-shaking
{
  "presets": [
    ["@babel/preset-react", {
      "runtime": "automatic"
    }]
  ]
}

@babel/preset-react 包括以下 plugins

  • @babel/plugin-syntax-jsx // 这个插件让 Babel 能够解析(但不转换)JSX 语法。它是其他 JSX 转换插件的基础
  • @babel/plugin-transform-react-jsx // 这个插件负责将 JSX 语法转换成相应的 React 元素调用。从 Babel 7.9.0 开始,此插件支持两种模式:Classic 模式和 Automatic 模式
  • @babel/plugin-transform-react-display-name // 此插件自动为 React 组件添加 displayName 属性,这对于调试过程是十分有用的。displayName 属性通常在开发者工具中显示,帮助识别组件的来源

3、

闭包是指函数能够访问并记住其词法作用域,即使该函数在其词法作用域之外执行。

  • 函数嵌套函数
  • 内部函数可以访问外部函数的作用域
  • 外部函数的变量不会被垃圾回收

📝 示例:

function outer() {
  let count = 0;
  return function inner() {
    count++;
    return count;
  };
}

2、Vue和React scheduler

  • Vue 的 scheduler 利用微任务 把多次状态变更合并到同一轮事件循环里执行一次
  • React 的核心思想:时间切片,把一个“大任务”拆成很多“小任务”

3、React 高阶组件

高阶组件是一个函数,它接收一个组件作为参数,并返回一个新的组件。

📝 示例:

const withEnhancement = (WrappedComponent) => {
  return class EnhancedComponent extends React.Component {
    // 增强逻辑
    render() {
      return <WrappedComponent {...this.props} />;
    }
  };
};
Edit this page
Prev
1_common
Next
eslint