Hướng dẫn immutability in php
Khi mới bập bõm vào làm với Laravel-ReactJs, có những keyword mà mình chưa từng được nghe bao giờ. Buồn một chút chính là Immutability nói chung và Immutable.js nói riêng khi sử dụng với ReactJs là một trong số đó (yaoming). Sau một hồi suy nghĩ sẽ gõ gì để túm lược lại khoảng thời gian vừa rồi thì cuối cùng mình đã quyết định những bài kiến thức cơ bản về ReactJs sẽ dành cho lần sau, và đâm luôn vào Immutability cho nóng ) Show Immutability là gì?Có thể hiểu đó là tính bất biến của đối tượng. Sau khi đã khởi tạo thì sẽ không thể thay đổi trạng thái. Nghe thì lạ lạ nhưng thực ra trước đây khi làm với mô hình MVC thì Mutability được sử dụng liên tục nhưng Immutability có lẽ được biết đến nhiều hơn ở Functional Programing. Rõ hơn, mình sẽ so sánh việc khởi tạo Mutable Class với Immutable Class trong PHP:
Có thể dễ dàng nhận ra sự khác biệt ở đây chính là Hay ví dụ về Immutability trong Javascript:
Tại sao lại là Immutability?Trong lập trình hướng đối tượng, sử dụng Mutability cho khả năng tự do thay đổi cấu trúc dữ liệu ban đầu của bạn và do đó cập nhật thay đổi cho tất cả các đối tượng khác có liên quan đến nó có thể làm cho việc cập nhật cấu trúc dữ liệu dễ dàng hơn, nhưng đồng thời có thể dẫn tới nhiều khó khăn trong việc quản lý và fix bug. Nếu sử dụng Immutability, bạn luôn tạo ra một bản sao của cấu trúc dữ liệu cũ và áp dụng các thay đổi cho bản sao thay vì thay đổi cấu trúc dữ liệu ban đầu. Và tác dụng lớn nhất của việc sử dụng Immutability đó chính là khiến cho việc lập trình trở nên đơn giản hơn :love_you_gesture: Immutability trong React-ReduxTrong React-Redux, rất nhiều components khác nhau làm việc với state chung của ứng dụng và các components đó hoạt động cùng lúc nên sử dụng Immutability với state là cách tốt nhất để theo dõi hoạt động của nó. Dưới đây là một ví dụ về sử dụng Immutability trong React-Redux:
Để Vấn đề xảy ra khi ta có quá nhiều state lồng nhau, trong đó lại có nhiều Object và Array lồng nhau nữa thì cách sử dụng [..., state.students] sẽ không ổn nữa (omg). Vì vậy, mình đề cập đến Immutable.js ở trên là để giải quyết những chuyện này. Immutability với Immutable.jsĐây là một thư viện được Facebook xây dựng để làm việc cùng React, nó sử dụng Structural Sharing: Thay vì phải chạy lung tung để có thể cập nhật value từ 3 -> 14 chotea , chúng ta tạo ra những root copy mới để chia sẻ và cập nhật một cách đơn giản hơn. Nó có thể cài đặt qua npm bằng cách:
Ví dụ ở trên được viết lại như sau:
Ngoài ra Immutable.js có rất nhiều method hay ho khác mà các bạn có thể tìm được ở Docs chính thống của nó. Kết bàiTrên đây là những kiến thức mình tổng hợp lại để nắm rõ hơn về Immutabilty. Mong chúng sẽ giúp ích ít nhiều cho các bạn. Cám ơn đã đọc bài viết của mình Nguồn trong bài:https://medium.com/@yej.arin.choi/this-is-a-post-that-summarizes-my-dive-into-immutability-in-programming-what-it-is-why-its-34cbba44f889 https://medium.com/@dtinth/immutable-js-persistent-data-structures-and-structural-sharing-6d163fbd73d2 http://facebook.github.io/immutable-js/docs/#/ |