React JS và React Native sử dụng Babel để compiler code cho phép chúng ta sử dụng syntax mới nhất của Javascript mà không phải chờ cho đến khi bản mới nhất được support hết trên tất cả interpreters.

Từ ES5, ES6, ES7 và mới đây nhất là ES8, ngôn ngữ javascript ngày càng được cải tiến mạnh mẽ, nhiều syntax mới được giới thiệu nhằm giúp chúng ta giảm thời gian viết code.
Dưới đây là những điểm mới của ngôn ngữ js mà ta có thể dùng trong khi lập trình React.

ES6

  • Arrow function:
    1
    {() => ()}

Thường dùng để thay thế hàm bind(this)

  • Block scoping:
    1
    let greeting = 'hi'

Biến khai báo bằng let chỉ tồn tại trong scope hiện tại. Biến được khai báo bằng const là biến không thể thay đổi được.

  • Classes: Ta có thể tạo ra class của Stateful components bằng cú pháp như sau:

    1
    2
    3
    4
    5
    export default class C extends React.Component {
    render() {
    return()
    }
    }
  • Có thể custom Stateless Components với arrow function:

    1
    2
    3
    export default const C = (props) => {
    return ()
    }
  • Destructuring:

    1
    const { isActive, style } = this.props
  • for…of:

    1
    for (var num of [1, 2, 4]) {}
  • modules:

    1
    import A from 'A'

Modules trong nodejs là có thể xem là singletons. Chi tiết: Are nodejs Modules singletons?

  • Template Literals:

    1
    2
    var who = 'world'; 
    var str = `Hello ${who}`;
  • Rest params:

    1
    function(style, ...rest){}

ES8

  • Async functions:

    1
    2
    3
    async function doStuffAsync() {
    const foo = await doOtherStuffAsync();
    }
  • Property initializers:
    Thay vì phải sử dụng hàm constructor() để khởi tạo giá trị cho state trong class, ta có thể trực tiếp khai báo và gán giá trị như sau:

    1
    2
    3
    4
    5
    6
    7
    class C extends.React.Component {
    state = {
    name: 'MyName'
    }
    render() {
    }
    }