JSX

  1. ------------------------------------------
  2. JSX 写法
  3. ------------------------------------------
  4. const Element = (
  5. <h1 className="greet">Hello World</h1>
  6. )
  7. ------------------------------------------
  8. Babel 转译
  9. ------------------------------------------
  10. const Element = React.createElement(
  11. 'h1',
  12. {className: 'greet'},
  13. 'Hello World'
  14. )
  15. ------------------------------------------
  16. 简化后的结构
  17. ------------------------------------------
  18. const Element = {
  19. type: 'h1',
  20. propz: {
  21. className: 'greet',
  22. children: 'Hello World'
  23. }
  24. }

ReactDOM.render() 渲染组件

React中的绑定事件

  • class中绑定this

    1. constructor(props) {
    2. super(props);
    3. this.state = {isToggleOn: true};
    4. // 为了在回调中使用 `this`,这个绑定是必不可少的
    5. this.handleClick = this.handleClick.bind(this);
    6. }
    7. render() {
    8. return (
    9. <button onClick={this.handleClick}>
    10. {this.state.isToggleOn ? 'ON' : 'OFF'}
    11. </button>
    12. );
    13. }
  • 实验性方法

    1. // 此语法确保 `handleClick` 内的 `this` 已被绑定。
    2. // 注意: 这是 *实验性* 语法。
    3. handleClick = () => {
    4. console.log('this is:', this);
    5. }
    6. render() {
    7. return (
    8. <button onClick={this.handleClick}>
    9. Click me
    10. </button>
    11. );
    12. }
  • 箭头函数(每次渲染 LoggingButton 时都会创建不同的回调函数)

    1. handleClick() {
    2. console.log('this is:', this);
    3. }
    4. render() {
    5. // 此语法确保 `handleClick` 内的 `this` 已被绑定。
    6. return (
    7. <button onClick={() => this.handleClick()}>
    8. Click me
    9. </button>
    10. );
    11. }

    深入了解 apply、bind、call 深入了解 construction super 做了什么

状态提升

如果多个子组件需要共享一个state, 可以将多个子组件的state提升到共同的父组件中


代码分割