aedev.net
  • Trang chủ
  • AI
  • Mobile
  • Flutter
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
No Result
View All Result
SAVED POSTS
aedev.net
  • Trang chủ
  • AI
  • Mobile
  • Flutter
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
No Result
View All Result
aedev.net
No Result
View All Result
Minh hoạ form TextInput validation và keyboard trong React Native

Form cơ bản với TextInput trong React Native

admin by admin
22/07/2026
in Lập trình Mobile, React Native
0
585
SHARES
3.2k
VIEWS
Summarize with ChatGPTShare to Facebook

Form là phần gần như app nào cũng có: đăng nhập, đăng ký, tìm kiếm, cập nhật profile, gửi phản hồi. Trong React Native, component quan trọng nhất khi làm form là TextInput.

Người mới nên bắt đầu bằng controlled input: giá trị của input nằm trong state, và mỗi lần người dùng nhập, state được cập nhật. Cách này giúp bạn dễ validation, submit và reset form.

TextInput cơ bản

import { useState } from 'react';
import { Button, TextInput, View } from 'react-native';

function LoginForm() {
  const [email, setEmail] = useState('');

  return (
    <View style={{ padding: 16 }}>
      <TextInput
        value={email}
        onChangeText={setEmail}
        placeholder="Email"
        keyboardType="email-address"
        autoCapitalize="none"
        style={{ borderWidth: 1, padding: 12, borderRadius: 8 }}
      />
      <Button title="Đăng nhập" onPress={() => console.log(email)} />
    </View>
  );
}

value lấy dữ liệu từ state. onChangeText cập nhật state khi người dùng nhập. Đây là mẫu bạn sẽ dùng rất nhiều.

Form đăng nhập nhỏ

function LoginScreen() {
  const [email, setEmail] = useState('');
  const [password, setPassword] = useState('');
  const [error, setError] = useState('');

  function handleSubmit() {
    if (!email.includes('@')) {
      setError('Email chưa hợp lệ');
      return;
    }

    if (password.length < 6) {
      setError('Mật khẩu cần ít nhất 6 ký tự');
      return;
    }

    setError('');
    // Gọi API đăng nhập ở đây
  }

  return (
    <View style={styles.container}>
      <TextInput
        value={email}
        onChangeText={setEmail}
        placeholder="Email"
        keyboardType="email-address"
        autoCapitalize="none"
        style={styles.input}
      />
      <TextInput
        value={password}
        onChangeText={setPassword}
        placeholder="Mật khẩu"
        secureTextEntry
        style={styles.input}
      />
      {!!error && <Text style={styles.error}>{error}</Text>}
      <Button title="Tiếp tục" onPress={handleSubmit} />
    </View>
  );
}

Ví dụ này đủ cho người mới hiểu: form có state, input cập nhật state, submit kiểm tra dữ liệu, lỗi được hiển thị bằng state.

Những prop hữu ích của TextInput

placeholder gợi ý nội dung. keyboardType chọn kiểu bàn phím phù hợp như email, number. autoCapitalize tránh tự viết hoa email. secureTextEntry dùng cho mật khẩu. returnKeyType giúp nút enter trên bàn phím có ý nghĩa hơn.

Đừng quên keyboard

Trên mobile, bàn phím có thể che input hoặc nút submit. Với form dài, bạn nên dùng KeyboardAvoidingView và ScrollView hợp lý để người dùng không bị kẹt khi nhập liệu.

import { KeyboardAvoidingView, Platform } from 'react-native';

<KeyboardAvoidingView
  behavior={Platform.OS === 'ios' ? 'padding' : undefined}
  style={{ flex: 1 }}
>
  {/* Form content */}
</KeyboardAvoidingView>

Lỗi thường gặp

Lỗi đầu tiên là input không có state nên khó submit. Lỗi thứ hai là quên autoCapitalize="none" cho email. Lỗi thứ ba là không hiển thị error rõ ràng. Lỗi thứ tư là không test với keyboard thật trên thiết bị, khiến input cuối màn hình bị che.

Kết luận

Form tốt không chỉ là vài ô nhập. Nó cần state rõ ràng, validation vừa đủ, thông báo lỗi dễ hiểu và layout thân thiện với bàn phím. Khi nắm chắc TextInput và controlled input, bạn đã có nền để làm login, search, profile và nhiều flow nhập liệu khác.

Nguồn tham khảo: React Native: TextInput, KeyboardAvoidingView, Platform.

SummarizeShare234
admin

admin

Related Stories

Minh họa Firebase Cloud Messaging gửi push notification tới ứng dụng React Native trên Android và iOS

Hướng dẫn tích hợp Firebase Cloud Messaging (FCM) vào React Native từ A-Z

by admin
02/08/2026
0

Hướng dẫn tích hợp Firebase Cloud Messaging vào React Native từ A-Z: Android, iOS/APNs, quyền notification, FCM token, foreground, background và backend.

Minh họa các hook nâng cao trong React Native kết nối với ứng dụng mobile

Các hook nâng cao trong React Native: dùng đúng để code gọn và tối ưu hiệu năng

by admin
30/07/2026
0

Hướng dẫn chi tiết các hook nâng cao trong React Native: useReducer, useContext, useMemo, useCallback, useRef, transition, custom hook và tối ưu hiệu năng.

Ảnh minh họa bài phỏng vấn Senior React Native

Tổng hợp 50 câu hỏi/trả lời phỏng vấn Senior React Native

by admin
27/07/2026
0

50 câu hỏi phỏng vấn Senior React Native bằng tiếng Việt về technical leadership, architecture, performance, release strategy, observability, security và mentoring.

Ảnh minh họa bài phỏng vấn Middle React Native

Tổng hợp 50 câu hỏi/trả lời phỏng vấn Middle React Native

by admin
27/07/2026
0

50 câu hỏi phỏng vấn Middle React Native bằng tiếng Việt về kiến trúc app, state management, performance, native build, testing, CI/CD và release.

Next Post
Minh hoạ điều hướng giữa các màn hình trong React Native bằng stack và tab

Navigation giữa các màn hình trong React Native cho người mới

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

AE Dev

AE Dev mang đến các bài viết về lập trình, mobile app, backend, frontend, WordPress và công nghệ, phù hợp cho developer muốn học hỏi và cập nhật kiến thức thực tế.

Recent Posts

  • Hướng dẫn tích hợp Firebase Cloud Messaging (FCM) vào React Native từ A-Z
  • Các hook nâng cao trong React Native: dùng đúng để code gọn và tối ưu hiệu năng
  • Tổng hợp 50 câu hỏi/trả lời phỏng vấn Senior React Native

Categories

  • AI
  • Backend
  • Đánh giá
  • DevOps
  • Flutter
  • Hướng dẫn
  • Lập trình Mobile
  • Phỏng vấn
  • React Native

Weekly Newsletter

  • Buy JNews
  • Support Forum
  • Pre-sale Question
  • Contact Us

© 2026 AE Dev - Blog công nghệ, lập trình và chia sẻ kiến thức IT.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
No Result
View All Result
  • Trang chủ
  • AI
  • Mobile
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
  • Flutter

© 2026 AE Dev - Blog công nghệ, lập trình và chia sẻ kiến thức IT.