๐Ÿ”” 53. React Native Toast ๋ฉ”์‹œ์ง€ & ํ”ผ๋“œ๋ฐฑ ์ฒ˜๋ฆฌ ์ „๋žต โ€” ์‚ฌ์šฉ์ž ์•Œ๋ฆผ UX ์ •๋ฆฌ

JM_Devยท2025๋…„ 6์›” 18์ผ
post-thumbnail

๋ชจ๋ฐ”์ผ ์•ฑ์„ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด
"๋กœ๊ทธ์ธ์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค"
"์ €์žฅ์ด ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค"
"์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ์„ ํ™•์ธํ•˜์„ธ์š”"
๊ฐ™์€ ๋ฉ”์‹œ์ง€๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ฐ›์•„๋ณด๊ฒŒ ๋œ๋‹ค.

์ด๋Ÿฐ ๋ฉ”์‹œ์ง€๋Š” ๋‹จ์ˆœํ•œ ์•Œ๋ฆผ์„ ๋„˜์–ด์„œ
์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ(Feedback)์˜ ํ•ต์‹ฌ ์š”์†Œ๋‹ค.

์ด๋ฒˆ ๊ธ€์€ React Native์—์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ๋ฒ•๋“ค๊ณผ
๊ทธ์— ๋”ฐ๋ฅธ UX ์„ค๊ณ„ ์ „๋žต์„ ์ •๋ฆฌํ•œ ๊ธ€์ด๋‹ค.


โœ… ๊ธฐ๋ณธ Toast ๊ตฌํ˜„ ๋ฐฉ์‹ 2๊ฐ€์ง€

๋ฐฉ์‹์„ค๋ช…
ํ”Œ๋žซํผ ToastAndroid์˜ Toast API ์‚ฌ์šฉ
์ปค์Šคํ…€ Toastreact-native-toast-message ๋“ฑ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ

๐Ÿ“ฆ react-native-toast-message ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ

npm install react-native-toast-message

๐Ÿ”ง ๊ธฐ๋ณธ ์„ค์ • (App.tsx)

import Toast from 'react-native-toast-message';

export default function App() {
  return (
    <>
      <YourNavigation />
      <Toast />
    </>
  );
}

๐Ÿ”ง ์‚ฌ์šฉ ์˜ˆ์‹œ

Toast.show({
  type: 'success',
  text1: '๐ŸŽ‰ ์ €์žฅ ์™„๋ฃŒ',
  text2: '์ž…๋ ฅํ•œ ์ •๋ณด๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ €์žฅ๋˜์—ˆ์–ด์š”',
});

๐Ÿ’ฌ ์ปค์Šคํ…€ ํ† ์ŠคํŠธ ํƒ€์ž… ์ •์˜

Toast.show({
  type: 'error',
  text1: 'โŒ ์š”์ฒญ ์‹คํŒจ',
  text2: '์„œ๋ฒ„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์–ด์š”. ๋‹ค์‹œ ์‹œ๋„ํ•ด์ฃผ์„ธ์š”.',
  position: 'bottom',
});
  • type: success / error / info / custom
  • position: top / bottom
  • autoHide: false๋กœ ๊ณ ์ • ์œ ์ง€ ๊ฐ€๋Šฅ

โš™๏ธ ์ƒํƒœ ๊ธฐ๋ฐ˜ ํ”ผ๋“œ๋ฐฑ ์ฒ˜๋ฆฌ ์˜ˆ์‹œ

const handleSubmit = async () => {
  try {
    await submitForm();
    Toast.show({
      type: 'success',
      text1: '์ „์†ก ์™„๋ฃŒ',
    });
  } catch (err) {
    Toast.show({
      type: 'error',
      text1: '์ „์†ก ์‹คํŒจ',
      text2: err.message,
    });
  }
};

โœ… ์„ฑ๊ณต/์‹คํŒจ ์‹œ ๊ฐ๊ฐ ๋‹ค๋ฅธ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ
โœ… ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋Š” ์„œ๋ฒ„์—์„œ ๋ฐ›์€ ๋‚ด์šฉ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ ๊ฐ€๋Šฅ


๐Ÿ’ก UX ์„ค๊ณ„ ํŒ

ํ•ญ๋ชฉ์ „๋žต
์ค‘๋ณต ํ† ์ŠคํŠธ ๋ฐฉ์ง€Toast.show ์ „์— ๊ธฐ์กด ํ† ์ŠคํŠธ dismiss ์ฒ˜๋ฆฌ
๊ธ€๋กœ๋ฒŒ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ์ „์—ญ ์—๋Ÿฌ ํ•ธ๋“ค๋Ÿฌ ๋˜๋Š” ์ƒํƒœ์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ
ํ„ฐ์น˜ ๋ถˆ๊ฐ€ ์˜์—ญToast๋Š” ํ™”๋ฉด ๋งจ ์œ„/์•„๋ž˜ ๋ฐฐ์น˜๋กœ UX ์นจํ•ด ์ตœ์†Œํ™”
์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ์Šฌ๋ผ์ด๋“œ, ํŽ˜์ด๋“œ ๋“ฑ ์ ์ ˆํžˆ ์„ค์ • ๊ฐ€๋Šฅ

๐Ÿง  ์ปค์Šคํ…€ ๋ฐฉ์‹ ๊ณ ๋ คํ•  ๋•Œ

  • ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ํ†ตํ•ด ์ „์—ญ ๋ฉ”์‹œ์ง€ ์ƒํƒœ(toastMessage) ๊ด€๋ฆฌ ๊ฐ€๋Šฅ
  • ๋””์ž์ธ ํŒ€ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๊ฒŒ ์™„์ „ํ•œ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ๊ฐ€๋Šฅ
  • ํ† ์ŠคํŠธ ์™ธ์—๋„ Snackbar, Modal ์•Œ๋ฆผ ํ˜•ํƒœ์™€ ํ†ตํ•ฉ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ์Œ

๐Ÿ“ ๋‚ด๊ฐ€ ๋А๋‚€ ์ 

Toast๋Š” ์‚ฌ์†Œํ•œ ๊ธฐ๋Šฅ ๊ฐ™์ง€๋งŒ
์œ ์ €๊ฐ€ ์•ฑ๊ณผ ์†Œํ†ตํ•˜๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ ‘์ ์ด๋ผ๋Š” ๊ฑธ ์•Œ๊ฒŒ ๋๋‹ค.
์ง€๊ธˆ์€ ์ƒํƒœ ์ฒ˜๋ฆฌ ํ๋ฆ„์—์„œ ํ† ์ŠคํŠธ ์•Œ๋ฆผ๊นŒ์ง€ ํฌํ•จํ•ด
UX ํ๋ฆ„์ด ๋Š๊ธฐ์ง€ ์•Š๋„๋ก ์„ค๊ณ„ํ•˜๊ณ  ์žˆ๋‹ค.


๐Ÿ”” โ€œ์•ฑ์€ ๋ง์„ ํ•  ์ˆ˜ ์—†๋‹ค. ๋Œ€์‹  Toast๊ฐ€ ๋งํ•ด์ค€๋‹ค.โ€


profile
๊ฐœ๋ฐœ์ž๋กœ ์ทจ์—…์„ ์ค€๋น„ ์ค‘ ์ด๋ฉฐ, ์—ด์‹ฌํžˆ ๊ณต๋ถ€ ์ค‘ ์ž…๋‹ˆ๋‹ค!

0๊ฐœ์˜ ๋Œ“๊ธ€