12/08/2018, 15:28

Một số feature ES6 thường dùng với Reactjs

Phiên bản mới nhất của Javascripts, ES2015 (ES6), ES2016 (ES7), và ES2017 có nhiều feature có thể được sử dụng thông qua Babel. Sau đây là một vài feature thường được dùng khi phát triển các dự án Reactjs. Arrow function cung cấp một cách viết ngắn, gọn hơn để khai báo các function. Khi ta không ...

Phiên bản mới nhất của Javascripts, ES2015 (ES6), ES2016 (ES7), và ES2017 có nhiều feature có thể được sử dụng thông qua Babel. Sau đây là một vài feature thường được dùng khi phát triển các dự án Reactjs.

Arrow function cung cấp một cách viết ngắn, gọn hơn để khai báo các function. Khi ta không dùng dấu ngoặc nhọn, ouput của function là giá trị được trả về. Sau đây là một stateless React component được định nghĩa bằng arrow function

const App = () => (
  <div>
    <PageBehindModals />
    <ChainedModals modalList={[ModalName, ModalPhone]} />
  </div>
);

tương đương với cách viết sau

function App() {
  return (
    <div>
      <PageBehindModals />
      <ChainedModals modalList={[ModalName, ModalPhone]} />
    </div>
  );
}

Destructing sẽ gán các property của một object cho các biến có cùng tên. Sau đây là một ví dụ destructing object this.props và this.state

class ChainedModals extends Component {
  render() {
    const { modalList } = this.props;
    const { currIndex, showModal } = this.state;
    // ..
  }
}

tương đương với cách viết sau

class ChainedModals extends Component {
  render() {
    const modalList = this.props.modalList;
    const currIndex = this.state.currIndex;
    const showModal = this.state.showModal;
    // ..
  }
}

Destructing có thể áp dụng cho tham số là function.

function ModalName({ onClickNext, step }) {
  return (
    <div>
      <h1>Step {step} - Name</h1>
      <Button onClick={onClickNext}>Next</Button>
    </div>
  );
}

tương đương với cách viết sau

function ModalName(props) {
  var onClickNext = props.onClickNext;
  var step = props.step;

  return (
    <div>
      <h1>Step {step} - Name</h1>
      <Button onClick={onClickNext}>Next</Button>
    </div>
  );
}

Destructing cũng có thể áp dụng cho các nested object. Sau đây là một ví dụ:

function setIndexFromRoute(props) {
  const { modalList, location: { pathname } } = props;
  // ..
}

tương đương với cách viết sau

function setIndexFromRoute(props) {
  const modalList = props.modalList;
  const pathname = props.location.pathname;
  // ..
}

Toán tử ... (rest/spread) trong JSX thực tế là cú pháp JSX để tạo ra các props trong rest object thành các prop riêng lẻ. Ví dụ:

function ModalName({ onClick, ...rest }) {
  return (
    <Modal {...rest}>
      <Button onClick={onClick}>Next</Button>
    </Modal>
  );
}
function ModalName(props) {
  var onClick = props.onClick;
  var show = props.show;
  var backdrop = props.backdrop;

  return (
    <Modal show={show} backdrop={backdrop}>
      <Button onClick={onClick}>Next</Button>
    </Modal>
  );
}

Source: https://www.saltycrane.com/blog/2016/03/es6-features-used-react-development/

0