NamDev
Guest
Lộ trình này hướng dẫn cả cho người bắt đầu từ đầu. Nếu bạn đã có kinh nghiệm thì có thể kéo xuống để tiếp tục sang các phần tiếp theo.
Kiến thức lập trình Web căn bản
Như đã nói ở trên, để học React Native thì tốt nhất bạn nên có kinh nghiệm lập trình web trước.
Hoặc, có thể bạn không cần có kinh nghiệm đi làm lập trình web.
Thì tối thiểu bạn cần hoàn thành một khóa học lập trình web nào đó để hiểu được những thứ cơ bản: Kỹ thuật lập trình, Cơ sở dữ liệu (Học SQL), HTML, CSS, JavaScript..
ES6 và JavaScript nâng cao
Bạn nên thành thạo các kỹ thuật làm việc với mảng, đối tượng.
Vận dụng tốt các phương thức map / reduce / filter, toán tử rest / spread, lập trình hàm, arrow function.
Hiểu sự khác nhau của let / const / var trong JS.
Node.js
Nodejs là một công nghệ dành cho Back end. Tuy nhiên, mình khuyên bạn nên học nó vì bạn sẽ sử dụng code của node.js trong React Native.
Nhiều khái niệm sẽ gặp phải trong React Native là:
Thử hoàn thành một vài ứng dụng thô sơ như CRUD, to-do apps, kết nối thành công với một số cơ sở dữ liệu là cực kỳ quan trọng.
Hoặc bạn có thể thực hiện một số loại ứng dụng Thương mại điện tử hoặc chat app nếu bạn muốn hiểu sâu hơn.
React
Không bắt buộc phải học React nhưng mình thực sự khuyên bạn nên học React trước và ít nhất là hiểu về các chủ đề sau:
Redux với React
Vì state được duy trì ở cấp component trong React, bạn có thể chuyển các handler với các biến cho các component con từ cha mẹ và ngược lại.
Những thứ này sẽ trở nên lộn xộn và khó quản lý khi ứng dụng của bạn phát triển và phức tạp hơn.
Thế nên, chúng ta có Redux.
Nhưng tài liệu chính thức nói rằng đừng quá vội vàng để sử dụng redux. Đôi khi trong các ứng dụng nhỏ, tốt hơn là không sử dụng redux.
Vì vậy, hãy sử dụng nó sau khi đã học những kiến thức cơ bản về React.
Bạn cũng có thể học redux trong react native và nó vẫn hoàn toàn giống nhau. Nhưng lý do khi học Redux với React là bạn sẽ tìm thấy rất nhiều câu trả lời và hỗ trợ cộng đồng trên Redux.
> Nếu bạn là người mới bắt đầu. mình đề nghị bạn nên tham gia một KHÓA HỌC FRONT END (Với React.js) trước khi bắt đầu học React Native.
Flexbox
Nếu bạn chưa biết Flexbox thì bạn phải học nó. Flexbox rất hữu ích trong việc thiết kế giao diện người dùng và thành phần quan trọng của Lộ trình học React Native.
Nó sẽ đòi hỏi bạn ít thời gian để nắm bắt và bạn sẽ có những lợi ích to lớn trong việc tạo kiểu dáng cho các thành phần của mình.
Mình gợi ý cho bạn FlexboxFroggy, trang web này có 24 bài tập nhỏ và bạn sẽ hiểu ý tưởng của Flexbox sau khi làm hết chúng.
Một số kiến thức nên biết khác
Về mặt kỹ thuật, điều kiện tiên quyết của Lộ trình học React Native đã đủ. Nhưng mình muốn đề xuất thêm một số công nghệ bạn nên tìm hiểu.
Những thứ này không bắt buộc phải biết nhưng bạn sẽ có thể viết ứng dụng di động hiệu quả hơn nếu bạn cũng biết chúng.
Kiến thức lập trình Web căn bản
Như đã nói ở trên, để học React Native thì tốt nhất bạn nên có kinh nghiệm lập trình web trước.
Hoặc, có thể bạn không cần có kinh nghiệm đi làm lập trình web.
Thì tối thiểu bạn cần hoàn thành một khóa học lập trình web nào đó để hiểu được những thứ cơ bản: Kỹ thuật lập trình, Cơ sở dữ liệu (Học SQL), HTML, CSS, JavaScript..
ES6 và JavaScript nâng cao
Bạn nên thành thạo các kỹ thuật làm việc với mảng, đối tượng.
Vận dụng tốt các phương thức map / reduce / filter, toán tử rest / spread, lập trình hàm, arrow function.
Hiểu sự khác nhau của let / const / var trong JS.
Node.js
Nodejs là một công nghệ dành cho Back end. Tuy nhiên, mình khuyên bạn nên học nó vì bạn sẽ sử dụng code của node.js trong React Native.
Nhiều khái niệm sẽ gặp phải trong React Native là:
- NPM
- Các lệnh như npm install, npm install - save-dev, npm start, ...
- Promises / Callbacks / Async Await (Đọc thêm: Xử lý bất động bộ trong JS)
Thử hoàn thành một vài ứng dụng thô sơ như CRUD, to-do apps, kết nối thành công với một số cơ sở dữ liệu là cực kỳ quan trọng.
Hoặc bạn có thể thực hiện một số loại ứng dụng Thương mại điện tử hoặc chat app nếu bạn muốn hiểu sâu hơn.
React
Không bắt buộc phải học React nhưng mình thực sự khuyên bạn nên học React trước và ít nhất là hiểu về các chủ đề sau:
- Components (Class với Functional)
- Kiểm soát các thành phần
- Handlers
- this.setState và this.props trong React
- Life cycle methods (Một chuỗi các sự kiện xảy ra từ khi thành phần React ra đời cho đến khi nó chết.)
- Fetch/Axios để gọi APIs
Redux với React
Vì state được duy trì ở cấp component trong React, bạn có thể chuyển các handler với các biến cho các component con từ cha mẹ và ngược lại.
Những thứ này sẽ trở nên lộn xộn và khó quản lý khi ứng dụng của bạn phát triển và phức tạp hơn.
Thế nên, chúng ta có Redux.
Nhưng tài liệu chính thức nói rằng đừng quá vội vàng để sử dụng redux. Đôi khi trong các ứng dụng nhỏ, tốt hơn là không sử dụng redux.
Vì vậy, hãy sử dụng nó sau khi đã học những kiến thức cơ bản về React.
Bạn cũng có thể học redux trong react native và nó vẫn hoàn toàn giống nhau. Nhưng lý do khi học Redux với React là bạn sẽ tìm thấy rất nhiều câu trả lời và hỗ trợ cộng đồng trên Redux.
> Nếu bạn là người mới bắt đầu. mình đề nghị bạn nên tham gia một KHÓA HỌC FRONT END (Với React.js) trước khi bắt đầu học React Native.
Flexbox
Nếu bạn chưa biết Flexbox thì bạn phải học nó. Flexbox rất hữu ích trong việc thiết kế giao diện người dùng và thành phần quan trọng của Lộ trình học React Native.
Nó sẽ đòi hỏi bạn ít thời gian để nắm bắt và bạn sẽ có những lợi ích to lớn trong việc tạo kiểu dáng cho các thành phần của mình.
Mình gợi ý cho bạn FlexboxFroggy, trang web này có 24 bài tập nhỏ và bạn sẽ hiểu ý tưởng của Flexbox sau khi làm hết chúng.
Một số kiến thức nên biết khác
Về mặt kỹ thuật, điều kiện tiên quyết của Lộ trình học React Native đã đủ. Nhưng mình muốn đề xuất thêm một số công nghệ bạn nên tìm hiểu.
Những thứ này không bắt buộc phải biết nhưng bạn sẽ có thể viết ứng dụng di động hiệu quả hơn nếu bạn cũng biết chúng.
- redux-thunk
- redux-saga
- LESS, SASS
- React hooks
- TypeScript
- Proptypes
- Bất kỳ cơ sở dữ liệu nào để kết nối ứng dụng của bạn, tốt nhất là Firebase (đây là một giải pháp đám mây tốt của Google để xác thực, cơ sở dữ liệu, lưu trữ...)