用户工具

站点工具


React 重点摘录

以下内容比较意识流,在初学React的时候复制自官方文档。

  • 你可以任意地在 JSX 当中使用 JavaScript 表达式,在 JSX 当中的表达式要包含在大括号里
  • JSX 本身其实也是一种表达式,在编译之后呢,JSX 其实会被转化为普通的 JavaScript 对象
  • 因为 JSX 的特性更接近 JavaScript 而不是 HTML , 所以 React DOM 使用 camelCase 小驼峰命名 来定义属性的名称,而不是使用 HTML 的属性名称
  • Babel 转译器会把 JSX 转换成一个名为 React.createElement() 的方法调用
  • 当React遇到的元素是用户自定义的组件,它会将JSX属性作为单个对象传递给该组件,这个对象称之为“props”
  • 组件名称必须以大写字母开头。例如,
    表示一个DOM标签,但 表示一个组件,并且在使用该组件时你必须定义或引入它。
  • Props的只读性,无论是使用函数或是类来声明一个组件,它决不能修改它自己的props
  • 所有的React组件必须像纯函数那样使用它们的props
  • 不要直接更新状态
  • 状态更新可能是异步的,React 可以将多个setState() 调用合并成一个调用来提高性能。
  • 状态更新合并
  • 数据自顶向下流动
  • React事件绑定属性的命名采用驼峰式写法,而不是小写
  • 如果采用 JSX 的语法你需要传入一个函数作为事件处理函数,而不是一个字符串(DOM元素的写法)
  • 通常情况下,如果你没有在方法后面添加 () ,例如 onClick={this.handleClick},你应该为这个方法绑定 this
  • 渲染多个组件,你可以通过使用{}在JSX内构建一个元素集合
  • Keys可以在DOM中的某些元素被增加或删除的时候帮助React识别哪些元素发生了变化。因此你应当给数组中的每一个元素赋予一个确定的标识
  • 在React应用中,对应任何可变数据理应只有一个单一“数据源”。通常,状态都是首先添加在需要渲染数据的组件中。此时,如果另一个组件也需要这些数据,你可以将数据提升至离它们最近的父组件中。你应该在应用中保持 自上而下的数据流,而不是尝试在不同组件中同步状态
  • 由于 JSX 编译后会调用 React.createElement 方法,所以在你的 JSX 代码中必须首先声明 React 变量
  • 你不能使用表达式来作为 React 元素的标签
  • 如果你没有给属性传值,它默认为 true
  • 如果你已经有了个 props 对象,并且想在 JSX 中传递它,你可以使用 ... 作为扩展操作符来传递整个属性对象
  • 不要过度使用 Refs 你可能首先会想到在你的应用程序中使用 refs 来更新组件。如果是这种情况,请花一点时间,更多的关注在组件层中使用 state。在组件层中,通常较高级别的 state 更为清晰。有关示例,请参考状态提升.
  • 为了在类上设置一个属性使用 ref 回调是访问 DOM 元素的常见模式。首先的方法就如上面的例子中一样设置 ref。甚至还有更简短的写法: ref={input => this.textInput = input}
  • 受控=数据绑定,非受控=不绑定
  • 如果你知道在某些情况下你的组件不需要更新,你可以在shouldComponentUpdate内返回false来跳过整个渲染进程,该进程包括了对该组件和之后的内容调用render()指令
  • React 中一个常见模式是为一个组件返回多个元素。Fragments 可以让你聚合一个子元素列表,并且不在DOM中增加额外节点
  • 你应该在 componentDidMount 生命周期方法内发送 AJAX 请求数据。这样你才能够在请求的数据到达时使用 setState 更新你的组件
  • render()方法是必须的
  • render()函数应该纯净,意味着其不应该改变组件的状态,其每次调用都应返回相同的结果,同时不直接和浏览器交互。若需要和浏览器交互,将任务放在componentDidMount()阶段或其他的生命周期方法。保持render() 方法纯净使得组件更容易思考。
  • 当前,若shouldComponentUpdate()返回false,而后componentWillUpdate(),render(), 和 componentDidUpdate()将不会被调用。注意,在未来React可能会将shouldComponentUpdate()作为一个线索而不是一个严格指令,返回false可能仍然使得组件重渲。
  • 将setState()认为是一次请求而不是一次立即执行更新组件的命令。为了更为客观的性能,React可能会推迟它,稍后会一次性更新这些组件。React不会保证在setState之后,能够立刻拿到改变的结果。
  • ReactDOM.render() 会使用你的 JSX 来替换你的 HTML 中的一个 DOM 节点。这 样你就可以很容易地把 React 集成到每一个其他的应用中。
  • 函数式无状态组件: 这类组件就是函数,它们接收一个输入并返回一个输出。输入是 props,输出就是一个普通的 JSX 组件实例。
/opt/bitnami/dokuwiki/data/pages/javascript/react/摘录.txt · 最后更改: 2019/12/21 05:27 由 superuser