분류 전체보기277 [React] 성능 개선 2. useTransition, useDeferredValue 리액트 18버전 이후부터 렌더링 성능이 저하되는 컴포넌트에서 쓸 수 있는 기능들이 추가 되었다. 18버전 이후 추가된 기능 1 : 일관된 batching setCount(1) setName(2) setValue(3) //여기서 1번만 재렌더링됨 state 변경함수를 연달아 사용하면 재렌더링도 원래 3번 되어야 하지만 마지막에 1회만 처리해준다. 일종의 불필요한 재렌더링 방지기능이고 batching이라고 한다. fetch().then(() => { setCount(1) //재렌더링됨 setName(2) //재렌더링됨 }) 리액트 17버전까지는 ajax요청, setTimeout안에 state 변경함수가 있는 경우 batching이 일어나지 않았는데, 18버전 이후 부터는 어디 있든 간에 재렌더링은 마지막에 .. 2023. 12. 22. [React] 성능 개선 1. 재렌더링 막는 memo(), useMemo 설명 컴포넌트가 재렌더링되면 거기 안에 있는 자식 컴포넌트는 항상 함께 재렌더링 된다. 평소엔 문제가 없지만 만약 자식 컴포넌트 렌더링 시간이 1초같이 큰 시간이라면, 부모컴포넌트가 재렌더링 될때마다 1초나 느린 문제가 생긴다. 그럴 땐 memo를 이용하면 된다. 예시 function Child(){ console.log('재렌더링됨') return 자식임 } function Cart(){ let [count, setCount] = useState(0) return ( { setCount(count+1) }}> + ) } Cart 컴포넌트 안에 Child 컴포넌트를 만들고 버튼 클릭 시 Cart 컴포넌트가 재렌더링 되게 했는데 이 경우 Child 컴포넌트도 재렌더링 된다. memo() 사용 import .. 2023. 12. 22. [Android Studio] NullPointerException 에러 발생하는 이유 NullPointerException 자바 프로그래밍 언어에서 발생할 수 있는 예외 중 하나입니다. 이 오류는 프로그램이 null 값을 가진 참조를 사용하려고 할 때 발생합니다. null은 아무런 객체를 참조하지 않는 상태를 나타내기 때문에, 이에 대한 메소드 호출이나 필드 접근 등을 시도하면 발생합니다. 오류 해결 방식을 위한 접근 방법들 if (myObject != null) { // myObject를 사용하는 코드 } else { // null이 아닌 경우에 대한 대체 로직 또는 오류 처리 } -> Null 체크: 사용하기 전에 참조가 null인지 확인하십시오. MyClass myObject = new MyClass(); // 또는 다른 초기화 방법 -> 올바른 초기화: 참조 변수를 사용하기 전에 .. 2023. 12. 22. [Android Studio] CountDownTimer 사용 방법 사용 방법 // 카운트다운타이머 객체 생성 CountDownTimer countDownTimer; long time = Integer.parseInt(strTime); time = time * 1000; // 위의 time에 맞는 타이머를 동작시킨다. countDownTimer = new CountDownTimer(time, 1000) { // 1초마다 함수 실행 @Override public void onTick(long l) { // 남은 시간을 화면에 표시. 매초 마다 long remain = l / 1000; txtTime.setText(remain+""); } // 타이머가 종료될 때 실행 @Override public void onFinish() { // 타이머가 종료되면 할 작업 작성. //.. 2023. 12. 22. [Android Studio] values 폴더의 strings.xml 사용하기 strings.xml 파일은 언어만 따로 처리하면, 다국어 처리가 쉽기 때문에 파일 하나로 관리해준다. 코드에 값을 바로 입력하는 하드코딩도 하지 않기 때문에 변수값도 strings.xml 파일에 저장해서 활용할 수 있다. 사용하기 QuizApp A honey bee can fly at 15mph. A jellyfish is approximately 95% water.! Elephants are the only mammals that can\'t jump Cats can hear ultrasound. A human brain weighs about three pounds. The tongue is the fastest healing part of the body. Americans, on average,.. 2023. 12. 22. [Android Studio] IndexOutOfBounds Exception 에러 IndexOutOfBoundsException란? 자바에서 배열 또는 리스트 등의 컬렉션에서 유효하지 않은 인덱스에 접근하려고 할 때 발생하는 예외입니다. 이 예외는 배열 또는 리스트의 범위를 초과하는 인덱스를 사용하는 시도를 감지하고 발생합니다. 예제 public class Example { public static void main(String[] args) { // 배열 선언 int[] numbers = {1, 2, 3, 4, 5}; try { // 유효하지 않은 인덱스에 접근 int value = numbers[10]; System.out.println(value); } catch (IndexOutOfBoundsException e) { System.out.println("IndexOutOfBou.. 2023. 12. 22. [Android Studio] ProgressBar 사용법 activity_main.xml Palette - Widgets에 가면 ProgressBar가 두 개 있는데 위 사진과 같은걸(Horizontal) 골라 준다. 드래그 해서 화면에 넣고, Attributes 탭 - Common Attributes에 가서 속성을 설정한다. 화면 progressTint : 색상 max = 프로그레스바 최대 칸 progress = 시작 칸 2023. 12. 22. [Android Studio] AlertDialog 사용하기 // 다이얼로그 객체 생성 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); // 이 다이얼로그의 외곽부분을 눌렀을 때 사라지지 않게 하는 함수 builder.setCancelable(false); // 제목 builder.setTitle("퀴즈 끝"); // 내용 builder.setMessage("퀴즈가 모두 끝났습니다. 맞춘 정답은 " + count + "개 입니다." ); // 버튼 1 builder.setNegativeButton("취소", OnClickListener(){}) // 버튼 2 builder.setPositiveButton("확인", OnClickListener(){}) // 버튼 3 builder... 2023. 12. 22. [Android Studio] 에뮬레이터에서 Toast 메세지 안 뜰때 해결 방법 Toast.makeText(MainActivity.this, "년도를 입력하세요.", Toast.LENGTH_LONG).show(); -> 코드에 문제가 없는데 에뮬레이터에서 뜨지 않는다. 해결법 에뮬레이터 정지 후, Tools > AVD Manager에 들어가서 사용 중인 에뮬레이터의 데이터를 삭제한다. (Wipe Data) 그 후 에뮬레이터를 다시 실행, Android Studio도 다시 실행한다. 결과 -> Toast 메세지가 제대로 보인다. 2023. 12. 22. [Android Studio] TextView 객체에 setText() 사용할 때 주의점 TextView textResult; result = 3232 textResult.setText("" + result); TextView 클래스의 setText 함수에는 문자열만 넣어줘야 한다. 만약 입력해야할 값이 숫자인 경우는 빈따옴표 처리 해주면 된다. 숫자를 넣게되면 에러가 발생해 앱이 종료 되어 버린다. 2023. 12. 22. 이전 1 ··· 7 8 9 10 11 12 13 ··· 28 다음