묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
[빠짝스터디 4주차] 최종 과제
4주차 최종 과제 제출합니다 🙂 https://jypack788.notion.site/6-141c114ce71e80119842f30b300686b1?pvs=4
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
트와이스 앱을 만들다가
2 issues were found when checking AAR metadata: 1. Dependency 'androidx.core:core-ktx:1.15.0' requires libraries and applications that depend on it to compile against version 35 or later of the Android APIs. :app is currently compiled against android-34. Also, the maximum recommended compile SDK version for Android Gradle plugin 8.3.0 is 34. Recommended action: Update this project's version of the Android Gradle plugin to one that supports 35, then update this project to use compileSdk of at least 35. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 2. Dependency 'androidx.core:core:1.15.0' requires libraries and applications that depend on it to compile against version 35 or later of the Android APIs. :app is currently compiled against android-34. Also, the maximum recommended compile SDK version for Android Gradle plugin 8.3.0 is 34. Recommended action: Update this project's version of the Android Gradle plugin to one that supports 35, then update this project to use compileSdk of at least 35. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on).이렇게 떠요 ㅠㅠ
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
HTTP 메시지 전송 시 계층별 역할
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]HTTP 메시지 전송 시 각 계층별 역할이 명확하게 이해가 되지 않아서 제가 이해한 대로 작성해보았습니다. 각 계층별로 정리를 잘한게 맞는지 한번만 확인 부탁드립니다 ! ㅠㅠ
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형2유형 피처 엔지니어링
선생님, 수업 잘 들었습니다.퇴근 후에 아무래도 시간이 많지는 않아서 조금 더 간단하게 풀이할 수 있게 준비를 하고 싶은데피처 엔지니어링을 할 때 항상 아래 두 가지 방법을 동시에 사용해서 수치형과 범주형 컬럼들을 동시에 사용해도 문제가 없을까요? 수치형 : 스케일링범주형 : 인코딩
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
백준 22988 문제 질문
용량(x)이 13이고 병에 들어있는 용량(arr[e])이 13일 때,즉 arr[e] == x: 일 때 cnt += 1 하고 e 부분만 빼기 1을 해주는 부분에서 이해가 되지 않았습니다.문제에서 "두 개를 반납해야 새로운 용량을 준다고 했는데" 선생님께서는 최대용량(13)일 때 하나만 반납했기 때문에 이해가 잘안되네요..이 부분 한번 설명 해주실 수 있으실까요?
-
미해결실습으로 배우는 핵심 네트워크 기술
gns3 자료
안녕하세요 gns 압축 파일 받으려하니 링크가 잘못됐다고 다운로드가 안됩니다. 확인 부탁드립니다.
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
섹션5 InitState에서 궁금한점이 있습니다
void FHakGameplayTags::AddAllTags(UGameplayTagsManager& Manager)이 함수에서 Manager를 사용하고 있지 않는데 전달하는 이유가 뭔가요?
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
[빠짝스터디 4주차 과제] 최종 과제
노션 링크 남깁니다.https://reinvented-friday-e96.notion.site/BigQuery-4-143bfe02e9e78018a7dac138fc69b120?pvs=4
-
미해결김영한의 실전 자바 - 중급 2편
제네릭 와일드카드질문
오랜만에 햇갈려서 제네릭 다시볼려고 영한님 찾아왔습니다.제네릭메서드랑 와일드카드 언제쓸지 구분할때좀더 명확한 타입이 필요할때 제네릭 타입을 쓰면 될까요 ?좀 햇갈리네요 이부분이강의 예시코드를 보면 Dog dog = WildCardEx.printAndReturnGeneric(dogBox); //Dog 타입 Animal animal = WildCardEx.printAndReturnWildcard(dogBox); // 부모 타입 (Animal ) 이렇게 나와서 특별한 형 변환이 필요없을때 와일드 카드를 쓴다고 생각하면 맞는생각일까요 ?
-
해결됨[리뉴얼] 맛집 지도앱 만들기 (React Native & NestJS)
강사님 안녕하세요 질문 있습니다.
❗질문 작성시 꼭 참고해주세요현재 문제(또는 에러)와 코드(또는 github)를 첨부해주세요. 맥/윈도우, 안드로이드/iOS, ReactNative, Node 버전 등의 개발환경을 함께 적어주시면 도움이 됩니다. 에러메세지는 일부분이 아닌 전체 상황을 올려주세요. (일부만 자르거나 복사하지말아주세요.) 개발환경/코드에 대한 정보가 없을경우 답변이 어렵습니다. 강사님 안녕하세요.지금 mac m3환경에서 개발중입니다.react-native 버젼 : 0.72.6 현재 [2-5] Drawer Navigation을 수강중인데요,아이폰은 빌드 성공했는데 안드로이드에서 계속 빌드가 실패하고 있습니다.gpt에게 한번 질문을 해보니 버전을 올리라고하더라구요.그럼 기존에 맞춰놓은 것들이 깨질까봐 걱정되어서 질문드립니다.어떻게 하면좋을까요? 터미널: info 💡 Tip: Make sure that you have set up your development environment correctly, by running react-native doctor. To read more about doctor command visit: https://github.com/react-native-community/cli/blob/main/packages/cli-doctor/README.md#doctor /Users/rengoku/Documents/projects/Matzip/front/node_modules/react-native-reanimated/android/src/main/java/com/swmansion/reanimated/NodesManager.java:440: error: switch rules are not supported in -source 11 case "opacity" -> { ^ (use -source 14 or higher to enable switch rules) /Users/rengoku/Documents/projects/Matzip/front/node_modules/react-native-reanimated/android/src/main/java/com/swmansion/reanimated/layoutReanimation/AnimationsManager.java:356: error: pattern matching in instanceof is not supported in -source 11 if (props.get(Snapshot.TRANSFORM_MATRIX) instanceof ReadableNativeArray matrixArray) { ^ (use -source 16 or higher to enable pattern matching in instanceof) 2 errors FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':react-native-reanimated:compileDebugJavaWithJavac'. > Compilation failed; see the compiler error output for details. * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 3s info Run CLI with --verbose flag for more details. 버전 정보입니다."dependencies": { "@react-native-masked-view/masked-view": "^0.3.2", "@react-navigation/drawer": "^7.0.5", "@react-navigation/native": "^7.0.3", "@react-navigation/stack": "^7.0.3", "react": "18.2.0", "react-native": "0.72.6", "react-native-gesture-handler": "^2.21.2", "react-native-reanimated": "^3.16.1", "react-native-safe-area-context": "^4.14.0", "react-native-screens": "^4.1.0" }, "devDependencies": { "@babel/core": "^7.20.0", "@babel/preset-env": "^7.20.0", "@babel/runtime": "^7.20.0", "@react-native/eslint-config": "^0.72.2", "@react-native/metro-config": "^0.72.11", "@tsconfig/react-native": "^3.0.0", "@types/react": "^18.0.24", "@types/react-test-renderer": "^18.0.0", "babel-jest": "^29.2.1", "eslint": "^8.19.0", "jest": "^29.2.1", "metro-react-native-babel-preset": "0.76.8", "prettier": "^2.4.1", "react-test-renderer": "18.2.0", "typescript": "4.8.4" }, "engines": { "node": ">=16" }
-
미해결[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
8회 기출유형(작업형3) 문제풀이
안녕하세요, 해당 영상 11분 7초에서 rsquared 함수를 사용하시던데, 문제에서 '적합한 모델의 결정 계수'라고 하였으니 rsquared_adj 함수를 사용해야 하지 않나 해서 질문드립니다!
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
템플릿 관련 질문입니다.
안녕하세요 강사님.템플릿이 명확하게 정의가 되지 않는데, 혹시 템플릿 한번만 정의해주시면 안될까요, 저는 지금 두리뭉실하게만 머리속에 있습니다..질문 받아주셔서 감사합니다.
-
해결됨디지털포렌식 입문자를 위한 디지털포렌식 전문가 2급 실기 시험대비 강의(Encase/Autopsy)
vdmk 파일을 raw로 이미징하여도 Autopsy에서 분석 오류
안녕하세요,시나리오 4에서 알려주신 방법대로, vmdk 파일을 FTK Imager로 raw 파일로 이미징하여도 오톱시에서 아래와 같이 오류가 나옵니다.혹시 조치 방법이 있을까요? (경로 문제 등..)FTK Imager에서는 파일시스템 잘 보입니다. FTK Imager로 Raw로 이미징
-
미해결김영한의 실전 자바 - 기본편
문제2 PayService
[질문 내용]김영한 강사님께서 영상 18분 33초쯤에 PayService에 만든 findPay메소드에서 결제 수단을 넣으면 PayService의 코드가 바뀐다는 말이 잘 이해가 안됩니다. 자세하게 설명해주실 수 있을까요?
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
[빠짝스터디 4주차 과제] 리텐션 과제
1번WITH base AS ( SELECT DISTINCT user_id, user_pseudo_id, event_name, DATE(DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul')) AS event_date, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime FROM advanced.app_logs WHERE event_date BETWEEN "2022-08-01" AND "2022-11-03" ), first_week_and_diff AS ( SELECT *, -- DATE_DIFF(event_date, first_date, DAY) AS diff_of_day DATE_DIFF(event_week, first_week, WEEK) AS diff_of_week FROM ( SELECT DISTINCT user_pseudo_id, -- DATE_TRUNC DATE_TRUNC(MIN(event_date) OVER(PARTITION BY user_pseudo_id), WEEK(MONDAY)) AS first_week, DATE_TRUNC(event_date, WEEK(MONDAY)) AS event_week FROM base ) ), user_counts AS ( SELECT diff_of_week, COUNT(DISTINCT user_pseudo_id) AS user_cnt FROM first_week_and_diff GROUP BY diff_of_week ) SELECT *, ROUND(SAFE_DIVIDE(user_cnt, first_week_user_cnt), 2) AS retention_rate FROM ( SELECT diff_of_week, user_cnt, FIRST_VALUE(user_cnt) OVER(ORDER BY diff_of_week ASC) AS first_week_user_cnt FROM user_counts )2번WITH base AS ( SELECT DISTINCT user_id, user_pseudo_id, event_name, DATETIME(TIMESTAMP_MICROS(event_timestamp),'Asia/Seoul') AS event_datetime, DATE(DATETIME(TIMESTAMP_MICROS(event_timestamp),'Asia/Seoul')) AS event_date, FROM advanced.app_logs) , weekly_user_active AS ( SELECT user_pseudo_id, DATE_TRUNC(event_date, WEEK) AS event_week, MIN(DATE_TRUNC(event_date, WEEK)) OVER (PARTITION BY user_pseudo_id) AS first_active_week, LAG(DATE_TRUNC(event_date, WEEK)) OVER (PARTITION BY user_pseudo_id ORDER BY DATE_TRUNC(event_date, WEEK)) AS pre_active_week FROM base ) , user_group AS ( SELECT user_pseudo_id, event_week, DATE_DIFF(event_week, pre_active_week, WEEK(MONDAY)) AS diff_prior_week, DATE_DIFF(event_week, first_active_week, WEEK(MONDAY)) AS diff_first_week, CASE WHEN event_week = first_active_week THEN 'NEW' WHEN DATE_DIFF(event_week, pre_active_week, WEEK) = 1 THEN 'Current' WHEN DATE_DIFF(event_week, pre_active_week, WEEK) > 1 THEN 'Resurrected' ELSE 'Dormant ' END AS user_seg FROM weekly_user_active ) SELECT event_week, user_seg, COUNT(DISTINCT user_pseudo_id) AS user_cnt, FROM user_group GROUP BY ALL ORDER BY 1 ; 4번WITH base AS ( SELECT DISTINCT user_id, user_pseudo_id, event_name, DATE(DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul')) AS event_date, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime FROM advanced.app_logs WHERE event_date BETWEEN "2022-08-01" AND "2022-11-03" AND event_name = 'click_payment' ), first_week_and_diff AS ( SELECT *, DATE_DIFF(event_week, first_week, WEEK) AS diff_of_week FROM ( SELECT DISTINCT user_pseudo_id, DATE_TRUNC(MIN(event_date) OVER(PARTITION BY user_pseudo_id), WEEK(MONDAY)) AS first_week, DATE_TRUNC(event_date, WEEK(MONDAY)) AS event_week FROM base ) ), user_counts AS ( SELECT diff_of_week, COUNT(DISTINCT user_pseudo_id) AS user_cnt FROM first_week_and_diff GROUP BY diff_of_week ) SELECT diff_of_week AS week, user_cnt, FIRST_VALUE(user_cnt) OVER(ORDER BY diff_of_week ASC) AS first_week_user_cnt, ROUND(SAFE_DIVIDE(user_cnt, FIRST_VALUE(user_cnt) OVER(ORDER BY diff_of_week ASC)) * 100, 2) AS retention_rate FROM user_counts ORDER BY diff_of_week
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
[빠짝스터디 4주차] 6-1 과제
개요Domain : 배달음식 어플리케이션Data set : app_logs 테이블데이터기간: 2022.08~2022.12목적: Foodie 현황 데이터분석 데이터분석1. 월별 활성 사용자 수목적: 월별 활성 고객 파악을 통해 서비스의 전반적인 흐름 파악1-1 지표정의MAU (Monthly Active Users)한 달 동안 앱을 사용한 순수 고유 사용자 수중복을 제거한(COUNT DISTINCT) user_id 기준으로 집계서비스의 전반적인 성장과 규모를 보여주는 핵심 지표Cart Users한 달 동안 장바구니에 상품을 담은 순수 고유 사용자 수event_name = 'click_cart'인 이벤트의 고유 사용자 수실제 구매 의도를 가진 잠재 고객의 규모를 파악할 수 있는 지표Payment Users한 달 동안 실제 결제를 진행한 순수 고유 사용자 수event_name = 'click_payment'인 이벤트의 고유 사용자 수실제 매출 발생에 기여한 고객의 규모를 나타내는 지표Cart to Payment Rate장바구니 사용자 중 실제 결제로 이어진 비율 (%)(Payment Users / Cart Users) * 100으로 계산주요 의미:구매 전환율을 나타내는 핵심 지표장바구니 단계에서의 이탈률 파악 가능높을수록 구매 전환이 잘 이루어짐을 의미쿼리WITH base AS ( SELECT DISTINCT user_id, user_pseudo_id, event_name, DATE(DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul')) AS event_date, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime, event_params.key AS param_key, event_params.value.string_value AS string_value, event_params.value.int_value AS int_value FROM advanced.app_logs CROSS JOIN UNNEST(event_params) as event_params WHERE event_date BETWEEN "2022-01-01" AND "2022-12-31" ) # 월별 활성 사용자 분석 ,monthly_active AS ( SELECT FORMAT_DATE('%Y-%m', event_date) as year_month, COUNT(DISTINCT user_id) as MAU, COUNT(DISTINCT CASE WHEN event_name = 'click_cart' THEN user_id END) as cart_users, COUNT(DISTINCT CASE WHEN event_name = 'click_payment' THEN user_id END) as payment_users, ROUND(COUNT(DISTINCT CASE WHEN event_name = 'click_payment' THEN user_id END) * 100.0 / NULLIF(COUNT(DISTINCT CASE WHEN event_name = 'click_cart' THEN user_id END), 0), 2) as cart_to_payment_rate FROM base GROUP BY year_month ORDER BY year_month ) SELECT * FROM monthly_active 시각화 결론8월~10월 사이 사용자 확대특시 10월에 MAU가 증가하여 서비스의 성장사용자 수가 크게 증가했음에도 구매전환율이 안정적으로 유지MAU증가와 함께 실제 구매자 수도 증가⇒ 서비스가 8~10월 사이 급격한 성장세를 통해 사용자가 증가하였으며 일시적인 효과가 아닌 안정적으로 성장세에 맞는 고객을 확보하고 있는 중 Action ItemMAU 증가 원인 파악하기신규고객, 기존고객 중 어떤 고객이 활성화가 된건지 (신규, 기존에 따른 프로모션 등 확인하기)신규고객이라면 어떤 채널로 유입이 된건지 유입 근거 찾아보기기존고객이라면 기존고객 대상 프로모션을 한게 있는지, 특정페이지 개선이 되었거나, 변경사항이 있는지 확인해보기 2. Funnel 분석쿼리WITH base AS ( SELECT DISTINCT user_id, event_name, event_timestamp, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime, DATE(DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul')) AS event_date, user_pseudo_id FROM advanced.app_logs WHERE event_date BETWEEN "2022-01-01" AND "2022-12-31" ), user_journey AS ( SELECT user_id, event_date, event_name, event_datetime, -- 사용자별 이벤트 발생 순서 ROW_NUMBER() OVER (PARTITION BY user_id, event_date ORDER BY event_datetime) as event_sequence FROM base ), funnel_steps AS ( SELECT event_date, COUNT(DISTINCT CASE WHEN event_name = 'screen_view' THEN user_id END) as view_users, COUNT(DISTINCT CASE WHEN event_name = 'click_cart' THEN user_id END) as cart_users, COUNT(DISTINCT CASE WHEN event_name = 'click_payment' THEN user_id END) as payment_users FROM user_journey GROUP BY event_date ), funnel_rates AS ( SELECT event_date, view_users, cart_users, payment_users, ROUND(cart_users * 100.0 / NULLIF(view_users, 0), 2) as view_to_cart_rate, ROUND(payment_users * 100.0 / NULLIF(cart_users, 0), 2) as cart_to_payment_rate, ROUND(payment_users * 100.0 / NULLIF(view_users, 0), 2) as view_to_payment_rate FROM funnel_steps ) #SELECT * FROM funnel_rates #ORDER BY event_date SELECT event_date, view_users as view_users_count, cart_users as cart_users_count, payment_users as payment_users_count, ROUND((cart_users * 100.0 / view_users), 2) as view_to_cart_rate, ROUND((payment_users * 100.0 / cart_users), 2) as cart_to_payment_rate, ROUND((payment_users * 100.0 / view_users), 2) as total_conversion_rate FROM funnel_rates ORDER BY event_date시각화⇒ 공휴일 등 특정 날짜에 고객 유입 변동이 큼 8월부터 10월까지 고객이 급격하게 늘었으나 이탈율은 9월에 높게 나타났음그에 비해 10월은 고객이 크게 늘어났음에도 이탈율은 큰폭으로 보이지 않음view > cart는 20% 수준의 이탈율이나, cart > payment가 60% 수준의 큰 이탈율 발생⇒ 구간별 고객수가 전체적으로 같이 확대되어 이탈율은 월별 특이점 없음 Action Itemcart에서 payment 이탈 고객에게 쿠폰지급 프로모션 또는결제단계 최소화를 통해 이탈율 개선 방법 모색 필요
-
미해결챗 GPT를 활용한 파이썬 프로그래밍
강의 음성이 너무 작아 듣기가 불편합니다.
섹션 6 파이썬 26_Chap06 부터 동영상의 음성이 너무 작아서 불편합니다. 이썬26_Chap06_챗GPT로_생성한_이메일주소체크데모 파이파이썬26_Chap06_챗GPT로_생성한_이메일주소체크데모썬 26_Chap06_챗GPT로_생성한_이메일주소체크데모
-
미해결스프링 부트 - 핵심 원리와 활용
Tomcat EE
[TOMCAT EE는 뭔가요?]질문 내용 그대로 입니다!
-
미해결핸즈온 리액트 네이티브
ImagPickerScreen을 만드는 과정에서 문제가 발생하여 글을 남깁니다.
iOS에서 사진의 주소값을 ph://와 같은 주소를 반환하는데 해당 주소를 처리할 수 없다고 뜨는데 어떻게하면 좋을까요?오류문은 다음과 같습니다.No suitable URL request handler found for ph://17370BD6-D19B-4C06-9180-03BB64CF2AD2/L0/001-[RCTNetworking networkTaskWithRequest:completionBlock:] RCTNetworking.mm:706-[RCTImageLoader _loadURLRequest:progressBlock:completionBlock:]__139-[RCTImageLoader loadImageOrDataWithURLRequest:size:scale:resizeMode:priority:attribution:progressBlock:partialLoadBlock:completionBlock:]block_invoke.159dispatchcall_block_and_releasedispatchclient_calloutdispatchlane_serial_draindispatchlane_invokedispatchroot_queue_drain_deferred_wlhdispatchworkloop_worker_threadpthreadwqthreadstart_wqthread안드로이드 쪽에서는 사진이 정상적으로 목록이 조회되는 것을 알 수 있었습니다!
-
해결됨한 번에 끝내는 자바스크립트: 바닐라 자바스크립트로 SPA 개발까지
select값이 출력이 안돼요
input 값은 나오는데 select 값은 출력이 안돼요 ㅠ 오류 메세지도 따로 나오는 건 없고 console.log로 cities 값을 볼려고 했는데 빈 Array가 나옵니다 ㅠ import Header from "./components/Header.js"; import RegionList from "./components/RegionList.js"; import CityDetail from "./components/CityDetail.js"; import CityList from "./components/CityList.js"; import { request } from "./components/api.js"; export default function App($app){ const getSortBy = () => { if (window.location.search){ return window.location.search.split('sort=')[1].split('&')[0]; } return 'total'; }; const getSearchWorld = () => { if(window.location.search && window.location.search.includes('search=')){ return window.location.search.split('search=')[1] } //뒤에 있는 값을 반환 return ''; }; this.state={ startIdx : 0, sortBy : getSortBy(), searchWorld: getSearchWorld(), region: '', cities:'', }; const header = new Header({ $app, initialState:{ sortBy:this.state.sortBy, searchWorld:this.state.searchWorld }, handleSortChange: async(sortBy) => { const pageUrl = `/${this.state.region}?sort=${sortBy}`; history.pushState( null, null, this.state.searchWorld ? pageUrl + `&search=${this.state.searchWorld}` : pageUrl ); //변경된 정렬기준을 적용한 새로운 데이터를 불러옴 (매개변수로 전달받은 새로운 정렬기준인 sortBy 값을 넣어야함) const cities = await request(0, this.state.region, sortBy, this.state.searchWorld); console.log(cities) // 변경된 상태값을 업데이트 this.setState({ ...this.state, startIdx:0, sortBy: sortBy, cities: cities, }); }, handleSearch: async(searchWorld) => { //웹사이트 주소를 알맞게 변경 history.pushState( null, null, `/${this.state.region}?sort=${this.state.sortBy}&search=${searchWorld}` ); const cities = await request(0, this.state.region, this.state.sortBy, searchWorld); this.setState({ ...this.state, startIdx:0, searchWorld: searchWorld, cities: cities }) }, }); const regionList = new RegionList(); const cityList = new CityList({ $app, initialState:this.state.cities, // 아래는 더보기 버튼을 눌렀을 때 실행되는 것 handleLoadMore: async() => { const newStartIdx = this.state.startIdx + 40; const newCities = await request(newStartIdx, this.state.sortBy, this.state.region, this.state.searchWorld); this.setState({ ...this.state, startIdx : newStartIdx, cities:{ cities:[...this.state.cities.cities, ...newCities.cities], isEnd: newCities.isEnd, } }) } }); const cityDetail = new CityDetail(); this.setState = (newState) => { this.state = newState; cityList.setState(this.state.cities); header.setState({sortBy:this.state.sortBy, searchWorld:this.state.searchWorld}); }; const init = async() => { const cities = await request(this.state.startIdx, this.state.sortBy, this.state.region, this.state.searchWorld); this.setState({ ...this.state, cities: cities, //api 호출의 결과인 cities }); }; init(); }