Tìm kiếm bài viết

Làm ứng dụng học toán đơn giản với React Native

03.02.2021

0/5 (0 Reviews)

Hướng dẫn lập trình ứng dụng học toán đơn giản bằng React Native trên android cho mọi người. Cùng nhau học React Native nào.

    Chào các bạn, có lẽ cách để học 1 cái gì đó mới 1 cách nhanh nhất, không gì bằng việc bắt tay vào làm nó ngay lập tức. Đối với react native cũng vậy, sau 1, 2 ngày dành ra để đọc docs của nó, mình đã tạo ra 1 app đơn giản để giúp cho các bé cấp 1 có thể học môn toán 1 cách đỡ nhàm chán hơn. Ứng dụng dù còn khá sơ sài nhưng thông qua nó để tiếp cận React native cũng không quá tệ. Nên hôm nay mình sẽ viết 1 bài hướng dẫn để giúp các bạn tạo ra app đầu tiên của mình

    1) Cài đặt

    Trước tiên để bắt đầu làm với React native, bạn phải cài đặt đã, hãy làm theo hướng dẫn của link sau là ok: , với thiết bị test, mình chọn simulator nên phải cài thêm Android Studio ( hoặc bạn có thể dùng Genymotion -> không khuyến khích), nếu bạn chọn máy thật thì test sẽ trực quan hơn nhiều ( khuyến khích cách này)

    Câu lệnh cài đặt npx react-native init <Tên app của bạn>, đơn giản phải không. Giờ thì bắt đầu được rồi, đến đây thì bắt đầu được rồi

    2) Tạo giao diện

    App của mình sẽ chỉ có 1 màn hình duy nhất thôi, nên giao diện cũng sẽ vô cùng đơn giản

    Như các bạn quan sát, mình chia bố cục làm 3 phần là Header, Body và Footer, vì vậy code của mình sẽ được sắp xếp như này

    return (
        <View >

    Với mỗi Component, mình sẽ code riêng ,để sau này nếu muốn phát triển thêm cũng dễ chịu hơn

    const Header = () => {
        return (
          <View >

    Nếu các bạn đã đọc tới đây ( và đã từng làm React), thì có nhận ra và nói: "Ồ, nó cũng giống Reactjs nhở, có khác lắm đâu". Đúng rồi, nó không khác lắm so với React về cú pháp và cách sử dụng Component. Tuy nhiên nó vẫn có những đặc trưng của nó.

    Ví dụ: Thẻ View trong RN sẽ được xem như thẻ div trong React, thẻ Text là thẻ p ( nói chung là nó chứa chữ đấy), Thẻ TouchableHighlight giống như thẻ div kết hợp với button ( nghĩa là bấm được và >

    Trong RN không có className hay class, mà thay vào đó ta có >

    const windowWidth = Dimensions.get('window').width;
    
    const >

    Những thành phần như >, View hay Text ta sẽ import trực tiếp từ RN

    import {
      >

    Thật đơn giản để làm giao diện đúng không.

    3) Function

    Trong app này, mình sẽ sử dụng tới React Hook cho tiện lợi, mình sẽ khai báo điểm, thuật toán để random ra phép tính và kết quả

     const [statusQuiz, setStatusQuiz] = useState({
        isStart: false,
        content: 'BẮT ĐẦU',
      });
      const [point, setPoint] = useState(0);
      const [a, setA] = useState(randomNumber(0, 10));
      const [b, setB] = useState(randomNumber(0, 10));
      const [result, setResult] = useState(calculateResult());
      function calculateResult() {
        const isTrue = Math.floor(Math.random() * 2);
        if (isTrue === 0) {
          return a + b;
        }
        const isBigger = Math.floor(Math.random() * 2);
        let resultFalse = 0;
        if (isBigger === 0) {
          resultFalse = a + b + Math.floor(Math.random() * 5);
        } else {
          resultFalse = a + b - Math.floor(Math.random() * 5);
        }
        return resultFalse < 0 ? 0 : resultFalse;
      }
    
      function randomNumber(to, from) {
        return Math.floor(Math.random() * from) + to;
      }
    
      useEffect(() => {
        setA(randomNumber(1, 9));
        setB(randomNumber(1, 9));
        setResult(calculateResult());
      }, [point]);
    
      function pressAnswer(type) {
        const isTrue = a + b === result;
        if ((type === 'wrong' && isTrue) || (type === 'right' && !isTrue)) {
          setPoint(0);
          setStatusQuiz({
            isStart: false,
            content: 'SAI RỒI! BẠN CÓ MUỐN LÀM LẠI KHÔNG?',
          });
          return;
        }
        if ((type === 'wrong' && !isTrue) || (type === 'right' && isTrue)) {
          return setPoint(point + 1);
        }
      }
      function pressStart() {
        setStatusQuiz({
          isStart: true,
          content: '',
        });
      }
    

    Thuật toán và ý tưởng khá là dễ hiểu và đơn giản phải không . Chỉ cần lắp ráp lại là ta có 1 app hoàn chỉnh để vọc rồi.

    4) Demo Lúc vào app nó sẽ thế này

    Bấm vào "Bắt Đầu" để bắt đầu 

    Trả lời đúng thì điểm số sẽ lên

    Sai 1 câu, điểm sẽ về 0 và hiện lên thông báo 

    App chỉ có vậy thôi , nhưng cũng đủ để cháu mình học toán cả 1 buổi chiều rồi (yaoming)

    Cảm ơn các bạn đã theo dõi bài viết của mình. Nếu có gì sai sót và các bạn muốn góp ý bổ sung, hãy để lại bình luận ở dưới để mình biết nhé, xin cảm ơn các bạn :3

    Bài viết trên do 1 bạn chia sẻ trên internet, chúng tôi tổng hợp và trích soạn. Cảm ơn bạn đã có những bài viết hay cho cộng cồng.

    CÓ THỂ BẠN QUAN TÂM

    Bài Viết Cùng Chuyên Mục

    XEM THÊM
    thumbnail

    Kubernetes bài 6 - Vận hành k8s Day-Two Operations và Quản trị bằng GitOps

    22.05.2026

    Khi cụm Kubernetes của bạn đã được bảo mật cấu hình, tối ưu tài nguyên và thiết lập tự phục hồi, câu hỏi đặt ra là làm sao để duy trì sự ổn định đó trong nhiều năm tiếp theo mà không bị phụ thuộc

    thumbnail

    Kubernetes bài 5 - bảo mật Cloud Native và chuẩn DevSecOps cho K8s

    22.05.2026

    Việc siết chặt an ninh (Hardening) không phải là cấu hình một vài thông số rồi bỏ đó, mà là một tư duy phòng thủ chiều sâu.

    thumbnail

    Kubernetes bài 4 - Tối ưu Resource Auto-Healing và Scale Zero-Downtime

    22.05.2026

    Bài viết này sẽ đi sâu vào các cơ chế ở tầng Kernel giúp hệ thống tự phục hồi, chống lại các đợt tấn công cạn kiệt tài nguyên và cập nhật phiên bản mới mà người dùng không hề hay biết.

    thumbnail

    Kubernetes bài 3 - Bảo mật cấu hình k8s và config Security trên Production

    22.05.2026

    Kubernetes giải quyết bài toán này bằng hai đối tượng chuyên biệt nhưng nếu không hiểu rõ bản chất bảo mật ở tầng dưới, bạn đang tự tay dâng toàn bộ chìa khóa hệ thống cho hacker.

    thumbnail

    Kubernetes bài 2 - Mạng lưới k8s và luồng Traffic ở Packet Level

    22.05.2026

    Pod không chỉ là một container: Rất nhiều người nhầm lẫn Pod 1-1 với Container. Thực chất, Pod là đơn vị triển khai nhỏ nhất, có thể chứa một hoặc nhiều container

    Mục lục bài viết