묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[LG유플러스] 앱 만들기 초급 과정 (Flutter)
SDK 오류 확인 좀 부탁 드립니다.
환경 : MacOS 신규 프로젝트 생성 시에 계속 나와서 .. 정상적인 프로젝트를 생성 할 수 없습니다. 강의 자료 다운 받아서 사용은 가능 합니다.
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
typedef ColorIdSetter = void Function(int id); 관련 질문
typedef ColorIdSetter = void Function(int id);정의를 해서 ColorIdSetter는 int id값을 받는 함수라고 이해했습니다.그리고 아래 코드에서 색상을 누르면 해당 색상의 id 값을 넘겨주는 것까지 이해했습니다GestureDetector( onTap: () { colorIdSetter(e.id); }, 잘 이해가 되지 않는 부분은,final ColorIdSetter colorIdSetter;위 코드 처럼 외부에서 받게 되면 아래 코드를 입력할때 (int id) 값을 어떻게 받아 와서 selectedColorId에 id를 넘겨줄 수가 있는 건지 잘 이해가 되지 않습니다.colorIdSetter: (int id) { setState(() { selectedColorId = id; }); }, onTap 메소드 안에서 colorIdSetter(e.id)로 넣어준 id 값이 colorIdSetter: (int id) {} 의 id로 들어가게 되는건가요?어떻게 그렇게 되는지 몇번을 봐도 이해가 되지 않아서 질문 남깁니다 ㅠㅠㅠ 코드를 계속 보고 있으니까 점점 미궁으로 들어가는 거 같네요,,
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
ec2 도커 pgadmin 배포 에러
안녕하세요 aws ec2 배포중 docker-compose up 시 동일 에러가 계속 뜨는데 이유를 모르겠습니다ㅠㅠ...env 파일 따로 루트폴더에 생성해서 아이디 패스워드 작성해주었습니다오류메세지.envdocker-compose.yml
-
해결됨[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
플러터 형변환 관련 질문 있습니다.
안녕하세요 코드팩토리님! 다트의 기초부터해서 플러터까지 강의 정말 잘 듣고 있습니다. 설명을 너무 잘해주셔서 이해가 잘 되고 새로운 것을 알아가는 기쁨을 느끼게 해줘서 고맙습니다! 개인적으로 챗gpt api를 이용한 간단한 챗봇 만들기 프로젝트를 하고 있는데 며칠 째 해결이 안되는 부분이 있어서 문의드립니다. 한 번 봐주시면 정말 감사드리겠습니다.기본적으로 챗gpt에 영어로 질문하고 영어로 대답을 받아오는 것을 만들었습니다. 다음으로 구글 translate()를 통해서 사용자가 한글로 입력한 것을 영어로 번역하고 챗gpt로 넘겨주고 화면에는 한글로 표시하게까지는 완료했습니다. 그런데 이제 화면에서 보는 바와 같이 챗gpt의 답변만 영어로 바꾸면 되는데 여기서 에러가 뜹니다.child: IconButton( icon: const Icon( Icons.send_rounded, color: Color.fromRGBO(142, 142, 160, 1), ), onPressed: () async { var beforeTransText = _textController.text; var translationUser = await beforeTransText.translate( from: 'ko', to: 'en', ); setState( () { _messages.add( ChatMessage( text: _textController.text, chatMessageType: ChatMessageType.user, ), ); isLoading = true; }, ); // var input = _textController.text; var input = translationUser.text; _textController.clear(); Future.delayed(const Duration(milliseconds: 50)) .then((_) => _scrollDown()); generateResponse(input).then((value) { setState(() { isLoading = false; _messages.add( ChatMessage( text: value, chatMessageType: ChatMessageType.bot, ), ); }); }); _textController.clear(); Future.delayed(const Duration(milliseconds: 50)) .then((_) => _scrollDown()); }, ), ), ); }코드입니다. 제가 이해한 바는 아래와 같습니다. send 아이콘 버튼을 누르면 입력 받은 자료를 번역하고 ChatMessage()로 챗봇 기능을 사용하게 합니다. 다음으로 밑에 generateResponse(input).then((value)){} 로 챗gpt의 대답을 받아서 _message.add로 화면에도 추가하고 ChatMessage()로 값을 받는데 이 때 text: value를 저는 한글로 번역하기 위해서 이 부분을 다음과 같이 바꾸면 에러가 뜹니다. text: value.translate(from: 'en', to: 'ko'), 에러는 Error: The argument type 'Future<Translation>' can't be assigned to the parameter type 'String'. 이 방법 외에도 어떻게해도 자꾸 이런 타입에 String을 할당할 수 없다고 만 뜹니다ㅠㅠㅠ 도와주시면 정말 감사하겠습니다.. 아래는 ChatMessage 클래스입니다.enum ChatMessageType { user, bot } class ChatMessage { ChatMessage({ required this.text, required this.chatMessageType, }); final String text; final ChatMessageType chatMessageType; } 긴 질문 읽어주셔서 감사합니다!^^ 꼭 답변 부탁드립니다.. 그럼 좋은 하루되세요 - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.코드팩토리 디스코드https://bit.ly/3HzRzUMFlutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다!
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
dispose 구문 관련하여
dispose (3분 30초)경부터 제가 의미가 잘 이해가 안되어 문의 드립니다. timer가 null이 아닌것은 항상이라고 봐야겠죠? timer.periodic이 사용되었으니까요?!? timer.cancel 을 설명하실때 homescreenstate가 삭제되는 순간이 오면이라고 하셨는데... 여기서 왜 삭제되는 순간이 생기는지 모르겠습니다 ㅠ 아직 삭제되기위한 설계전에 미리 설명으로 이해하면 될까요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
useSWR 자동완성 질문
안녕하세요! 강의 잘 보고있습니다섹션 8에 유저페이지 생성하기 부분을 진행 하던 중 useSWR을 입력 시 툴팁으로 useSWR에 대한 추론이 나오시는데 저는 나오지를 않습니다ㅠㅠ.. useSWRConfig 말고는 나오지 않는데 이유가 무엇일까요?라이브러리는 제대로 설치가 되었습니다..!
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
도커를 이용한 Postgres 실행 강의 폴더가 안생겨요
똑같이 했는데요 docker-compose up data폴더안에 안생겨요
-
미해결애플 웹사이트 인터랙션 클론!
translateY대신 애플에서 사용한 것 처럼 matrix로 scale의 크기를 주려고 하는데
안녕하세요!! 강의를 전부 듣고 코드를 뜯어보며 복습중에 있습니다. section-0에서 사용한 것을 이용해 스크롤 될 때 matrix로 Text에 scale(80)정도로 주려고 코드를 입력해보니 적용은 되었으나 스크롤을 빠르게 올릴시에 정상적으로 사이즈가 줄어들지 않고 줄어들다 말거나 그러더라구요...ㅠㅠ 폰트 픽셀도 많이 깨지는 현상이 발생하구요. 혹시 해결하려면 어떤식으로 접근해야 할까요? 해당 코드 첨부드립니다. const sectionInfo = [ { // section-0 type: "sticky", heightNum: 5, scrollHeight: 0, objs: { container: document.querySelector("#scroll-section-0"), messageA: document.querySelector("#scroll-section-0 .main-message.a"), messageB: document.querySelector("#scroll-section-0 .main-message.b"), messageC: document.querySelector("#scroll-section-0 .main-message.c"), messageD: document.querySelector("#scroll-section-0 .main-message.d"), }, values: { messageA_opacity_in: [0.4, 1, { start: 0, end: 0.05 }], messageA_opacity_out: [1, 0, { start: 0.15, end: 0.2 }], messageA_scale_in: [1, 80, { start: 0.05, end: 0.25 }], messageA_scale_out: [80, 1, { start: 0.25, end: 0.05 }], messageB_opacity_in: [0, 1, { start: 0.2, end: 0.25 }], messageB_opacity_out: [1, 0, { start: 0.35, end: 0.4 }], messageB_translateY_in: [50, 0, { start: 0.2, end: 0.25 }], messageB_translateY_out: [0, -50, { start: 0.35, end: 0.4 }], messageC_opacity_in: [0, 1, { start: 0.4, end: 0.45 }], messageC_opacity_out: [1, 0, { start: 0.55, end: 0.6 }], messageC_translateY_in: [50, 0, { start: 0.4, end: 0.45 }], messageC_translateY_out: [0, -50, { start: 0.55, end: 0.6 }], messageD_opacity_in: [0, 1, { start: 0.6, end: 0.65 }], messageD_opacity_out: [1, 0, { start: 0.75, end: 0.8 }], messageD_translateY_in: [50, 0, { start: 0.6, end: 0.65 }], messageD_translateY_out: [0, -50, { start: 0.75, end: 0.8 }], }, }, ]; function calcValues(values, currentScrollY) { let returnValue; const currentSectionHeight = sectionInfo[currentSection].scrollHeight; // 현재 스크롤 섹션에서 스크롤 된 범위를 비율로 구하는 식 const scrollRatio = currentScrollY / currentSectionHeight; if (values.length === 3) { const scrollAniStart = values[2].start * currentSectionHeight; const scrollAniEnd = values[2].end * currentSectionHeight; const scrollAniHeight = scrollAniEnd - scrollAniStart; if (currentScrollY >= scrollAniStart && currentScrollY <= scrollAniEnd) { returnValue = ((currentScrollY - scrollAniStart) / scrollAniHeight) * (values[1] - values[0]) + values[0]; } else if (currentScrollY < scrollAniStart) { returnValue = values[0]; } else if (currentScrollY > scrollAniEnd) { returnValue = values[1]; } } else { returnValue = scrollRatio * (values[1] - values[0]) + values[0]; } return returnValue; } function playAnimation() { const objs = sectionInfo[currentSection].objs; const values = sectionInfo[currentSection].values; const currentScrollY = scrollY - prevScrollHeight; const currentSectionHeight = sectionInfo[currentSection].scrollHeight; const scrollRatio = currentScrollY / currentSectionHeight; switch (currentSection) { case 0: // message if (scrollRatio <= 0.05) { objs.messageA.style.opacity = calcValues( values.messageA_opacity_in, currentScrollY ); } else { objs.messageA.style.opacity = calcValues( values.messageA_opacity_out, currentScrollY ); objs.messageA.style.transform = `matrix(${calcValues( values.messageA_scale_in, currentScrollY )}, 0, 0, ${calcValues( values.messageA_scale_in, currentScrollY )}, 0, 0)`; }
-
해결됨[LG유플러스] 앱 만들기 초급 과정 (Flutter)
안드로이드 에뮬레이터 실행 오류 관련 문의
Flutter 프로젝트 생성해보기 강의에서 에뮬레이터 실행 에러 있어서 문의 드립니다.pixel tiramisu 생성까지는 완료하였고 에뮬레이터 실행이 안됩니다 INFO | Android emulator version 32.1.13.0 (build_id 10086546) (CL:N/A) INFO | Found systemPath C:\Users\choinuri\AppData\Local\Android\Sdk\system-images\android-33\google_apis\x86_64\ ERROR | Running multiple emulators with the same AVD ERROR | is an experimental feature. ERROR | Please use -read-only flag to enable this feature. INFO | Storing crashdata in: C:\Users\choinuri\AppData\Local\Temp\\AndroidEmulator\emu-crash.db, detection is enabled INFO | Duplicate loglines will be removed, if you wish to see each indiviudal line launch with the -log-nofilter flag. INFO | IPv4 server found: 168.126.63.1
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
도저히 해결이 안되요. query.orderBy
무엇이 문제인지.. 오류를 해결할 수가 없네요.The element type 'OrderingTerm' can't be assigned to the list type 'OrderingTerm Function($TodosTable)'.이렇게 오류가 나오는데.. Date변수는 정렬하는데 기준값?으로 사용할수 없는 건가요?Stream<List<Todo>> watchTodos() { final query = select(todos); query.orderBy([OrderingTerm.asc(todos.date)]); return query.watch(); }
-
해결됨따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
ec2 배포 후 에러 질문입니다.
error : DataSource is not set for this entity.백엔드 서버와 데이터베이스 도커를 통해 연결 하기를 적용한 후에도db랑 연결이 안되는거 같은데, 제가 도커랑 orm 개념이 조금 부족해서 해결을 못시키는거 같습니다ㅠdata-source.tsdocker-compose.yml server/Dockerfile + client/Dockerfile로 되어있습니다.api가 500으로 걸리는걸로 보아server는 잘 작동 중인거 같은데 data 쪽이 연결이 안되는거 같아서 이 부분에 대한 해결점 이나 혹시 데이터가 연결 안된 걸 확인 하는 방법이나 해결 점 있을까요?ㅠㅠ
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
웹뷰 사용시 첨부파일 설정(<input type='file'>) 및 위치(Geolocation) 설정 문의
WebView.setWebChromeClient(new WebChromeClient() { @Override public void onGeolocationPermissionsShowPrompt( String origin, GeolocationPermissions.Callback callback) { ... } @Override public boolean onShowFileChooser( WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) { ... }}); 위 안드로이드 코드에 대응되는 Flutter에서의 사용법에 대해 문의 드립니다.iOS는 환경이 안되어 확인 못한 상태이며, 안드로이드는 첨부파일 설정은 확인 했는데, 위치 설정 방법은 찾지 못했습니다.알고 계시면 한수 전수 부탁드립니다.WebViewController _webViewController = WebViewController();if (Platform.isAndroid) { final androidController = _webViewController.platform as AndroidWebViewController; await androidController.setOnShowFileSelector(showSelectMediaType);}Future<List<String>> showSelectMediaType( final FileSelectorParams params) async {}
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
selectedDate 변수에 특정 지정 날짜 넣는 방법
selectedDate 에 현재날짜를 입력했는데 현재날짜가 아니라 과거의 특정 고정날짜를 넣고자 하는데 어떻게 해야 할까요? 예를 틀어 2020.01.01 을 selectedDate 에 넣는 방법요
-
미해결애플 웹사이트 인터랙션 클론!
[스크롤 높이 세팅] scrollHeight값이 3990아닌 4645로만 나오는데 뭐가 문제일까요? ㅠㅠ
(() => { const sceneInfo = [ { // 0 type: 'sticky', heightNum: 5, // 브라우저 높이의 5배로 scrollHeight 세팅(디바이스 마다 높이가 다르기에 각 기계가 가진 높이를 불러오고 곱해준다.) scrollHeight: 0, }, { // 1 type: 'normal', heightNum: 5, scrollHeight: 0, }, { // 2 type: 'sticky', heightNum: 5, scrollHeight: 0, }, { // 3 type: 'sticky', heightNum: 5, scrollHeight: 0, } ]; function setLayout() { //각 스크롤 섹션의 높이 세팅 for (let i = 0; i < sceneInfo.length; i++) { sceneInfo[i].scrollHeight = sceneInfo[i].heightNum * window.innerHeight; } console.log(sceneInfo); } setLayout(); })(); 4645값으로 그대로 진행해도 될까요?
-
해결됨[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
PageView 이미지 총 개수 로드
안녕하세요 페이지뷰 관련해서 학습하고 있는데 궁금한게 생겨서 문의드립니다.강의에서 보면 페이지뷰에 이미지를 5개 넣고nextPage에서 4보다 작을 때 0으로 초기화 해주고 있는데,이때 이미지 총 개수를 상수가 아닌 컨트롤러나 다른 곳에서 가져올 수 있는지 알 수 있을까요?timer = Timer.periodic(Duration(seconds: 2), (timer) { int curPage = controller.page!.toInt(); int nextPage = curPage + 1; if(nextPage > 4){ // 상수말고 총 이미지 개수 또는 페이지 수를 가져올 수 있는지 nextPage = 0; } controller.animateToPage(nextPage, duration: Duration(milliseconds: 400), curve: Curves.linear,);
-
미해결[LG유플러스] 앱 만들기 초급 과정 (Flutter)
안드로이드 스튜디오 (안드로이드 에뮬레이터 GPS 수정)
...을 눌러 에뮬 설정창에서로케이션 검색과 savepoint 등록후 set Location으로내 위치를 변경해서 시뮬레이션 가능합니다.
-
미해결Slack 클론 코딩[실시간 채팅 with React]
useSelector가 초기값만 읽고, 상태변화를 읽지못함
안녕하세요. 선생님늦은 시간인데도 답변해주셔서 감사합니다(꾸벅)선생님께서 말씀해주신대로 useSelector를 써봤는데요.useSelector가 초기값만 읽고, updateReducer에 의해 상태가 업데이트되면,업데이트 된 값을 읽지 못합니다....1. console.log(title)이라고 썼는데, 아무것도 뜨지 않습니다2. Modal 컴포넌트에 제목을 입력을 해도 상태 변화를 읽지를 못합니다.어디서 잘못 된걸까요??const TodoItem = () =>{ const [state, dispatch] = useReducer(checkReducer, todoItem) const id = useSelector((state)=> state.update.id); const title = useSelector((state)=> state.update.title) const content = useSelector((state)=> state.update.content); const isDone = useSelector((state)=> state.update.isDone) const handleCheck = (id) =>{ dispatch(checkBox(id)); }; console.log(title) return( <SeveralItemContainer> <TodoItemContainer key={id}> <TitleContainer> <img className ="dot" src={dot} alt="icon"></img> <div className="title">{title}</div> <img onClick={ () => {handleCheck(id)}} className="noncheck" src = {isDone ? check: noncheck} alt="icon"></img> </TitleContainer> <div className="contentcontainer"> <div className="content">{content}</div> </div> </TodoItemContainer> </SeveralItemContainer> ) }; export default TodoItem; export const updateReducer = (state=initialState, action)=>{ switch(action.type){ case 'UPDATE_TITLE': return{...state, title: action.payload}; case 'UPDATE_STARTDATE': return{...state, startDate: action.payload}; case 'UPDATE_ENDDATE': return{...state, endDate:action.payload}; case 'UPDATE_CONTENT': return {...state, content: action.payload}; case 'ADD_ITEM': return {...state, id: Number(state.id)+1} //여기서 todoItem을 바로 쓸 수 없다. state나 action관련된 변수만 넣어야 한다 // 배열은 가능하지만, 객체는 전개연산자(...)를 쓸 수 없다 default: return state; } }; const rootReducer = combineReducers({ update: updateReducer, check: checkReducer, }); export default rootReducer; const Modal = ({onClick}) =>{ const [state, dispatch] = useReducer(updateReducer, initialState) const handleModalClick = (e) => { e.stopPropagation(); // 이벤트 버블링 막기 }; //사용자가 입력한 값을 추적하는 함수 const handleInputChange = (e) =>{ const {name, value} = e.target; dispatch({type: `UPDATE_${name.toUpperCase()}`, payload: value}) }; //클릭으로 적은 모든 내용을 한번에 전달 const addItem = () =>{ dispatch({type:'ADD_ITEM'}); }; return( <ModalBackGround onClick={onClick}> <ModalView onClick={handleModalClick} > <div className = "titleContainer"> <img className="dot" src = {dot} alt="icon"></img> <input value ={state.title} name = "title" className="title" placeholder="메모 제목" onChange={handleInputChange}></input> <img onClick={addItem} className="edit" src={edit} alt="icon"></img> </div> <div className="date"> <div className='일자'>일자</div> <input value ={state.startDate} name ="startDate" className ="start" placeholder="시작일" onChange={handleInputChange}></input> <div>~</div> <input value ={state.endDate} name= "endDate" className ="end" placeholder="종료일" onChange={handleInputChange}></input> </div> <div className='contentContainer'> <textarea value ={state.content} name ="content" className ="content" placeholder="메모" onChange={handleInputChange}> </textarea> </div> </ModalView> </ModalBackGround> ) }; export default Modal;
-
미해결Slack 클론 코딩[실시간 채팅 with React]
리덕스에서 스토어 부분 질문
안녕하세요. 선생님선생님 말씀대로 useSelector를 사용해 보려고,로컬스토리지 관련 코드들은 삭제했습니다.원하는 구현기능)질문은 Modal 컴포넌트에서 리듀서에 의해 업데이트된 상태를,todoItem 컴포넌트로 가져와서 사용이 가능한가요?todoItem 컴포넌트로 가져와서 todoData에 집어넣고 싶습니다...그래서 updateReducer에서 ADD_ITEM case를 읽을때 그때 그 상태를todoItem 컴포넌트로 가져와서 사용이 하고 싶습니다.질문)1. 위에 기능을 useSelector만 알면 가능할까요?2. 리덕스에 4단계 액션, 디스패치, 리듀서, 스토어 중 스토어 부분,저장했다가 필요할때 꺼내쓰는 부분을 잘 모르겠어요.어떤 추가적인 개념 공부가 필요할 까요? const Modal = ({onClick}) =>{ const [state, dispatch] = useReducer(updateReducer, initialState) const handleModalClick = (e) => { e.stopPropagation(); // 이벤트 버블링 막기 }; //사용자가 입력한 값을 추적하는 함수 const handleInputChange = (e) =>{ const {name, value} = e.target; dispatch({type: `UPDATE_${name.toUpperCase()}`, payload: value}) }; //클릭으로 적은 모든 내용을 한번에 전달 const addItem = () =>{ dispatch({type:'ADD_ITEM'}); }; return( <ModalBackGround onClick={onClick}> <ModalView onClick={handleModalClick} > <div className = "titleContainer"> <img className="dot" src = {dot} alt="icon"></img> <input value ={state.title} name = "title" className="title" placeholder="메모 제목" onChange={handleInputChange}></input> <img onClick={addItem} className="edit" src={edit} alt="icon"></img> </div> <div className="date"> <div className='일자'>일자</div> <input value ={state.startDate} name ="startDate" className ="start" placeholder="시작일" onChange={handleInputChange}></input> <div>~</div> <input value ={state.endDate} name= "endDate" className ="end" placeholder="종료일" onChange={handleInputChange}></input> </div> <div className='contentContainer'> <textarea value ={state.content} name ="content" className ="content" placeholder="메모" onChange={handleInputChange}> </textarea> </div> </ModalView> </ModalBackGround> ) }; export default Modal; export const updateReducer = (state=initialState, action)=>{ switch(action.type){ case 'UPDATE_TITLE': return{...state, title: action.payload}; case 'UPDATE_STARTDATE': return{...state, startDate: action.payload}; case 'UPDATE_ENDDATE': return{...state, endDate:action.payload}; case 'UPDATE_CONTENT': return {...state, content: action.payload}; case 'ADD_ITEM': return {...state, id: Number(state.id)+1} //여기서 todoItem을 바로 쓸 수 없다. state나 action관련된 변수만 넣어야 한다 // 배열은 가능하지만, 객체는 전개연산자(...)를 쓸 수 없다 default: return state; } }; const TodoItem = () =>{ const [state, dispatch] = useReducer(checkReducer, todoItem) const [todoData, setTodoData] = useState(todoItem); const handleCheck = (id) =>{ dispatch(checkBox(id)); }; return( <SeveralItemContainer> { todoData.map((item)=>{ return ( <TodoItemContainer key={item.id}> <TitleContainer> <img className ="dot" src={dot} alt="icon"></img> <div className="title">{item.title}</div> <img onClick={ () => {handleCheck(item.id)}} className="noncheck" src = {item.isDone ? check: noncheck} alt="icon"></img> </TitleContainer> <div className="contentcontainer"> <div className="content">{item.content}</div> </div> </TodoItemContainer> ) }) } </SeveralItemContainer> ) }; export default TodoItem;
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
next.js 13버전에서 express.static('public')이 먹지 않습니다.
안녕하세요.강의를 수강하면서 next 13으로 만들고 있습니다...노드에서 이미지 정적 폴더를 생성하고, 이미지가 서버에 저장되게끔 하는거는 구현했는데,아무리 해도 next에서 서버에 있는 이미지를 불러오지를 못합니다.아래는 제가 시도해본 방법입니다.app.use('/', express.static(__dirname + '/public')); app.use(express.static('public'));express에서 클라이언트 단으로 던져주는 저 app.use 자체가 먹지 않고 있고 아무 에러도 나오지 않아서 너무 답답합니다 ㅠㅠ 어떻게 해야 될까요...?.......
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
함수로 리턴하는 경우와 stateless widget으로 리턴하는 경우의 차이점 문의
강의를 들으면서 궁금했던 사항 문의 드립니다.질의 1. 함수로 정의할때 리턴값타입을 공통적으로 Widget으로 표시하는것과 리턴하는 특정 위젯 타입을 적어주는 것에 차이점이 무엇인가요? 질의 2. 아래와 같이 컬럼에 들어가는 Row 위젯을 함수로 정의하여 사용하는 경우와, Stateless 위젯으로 만들어서 사용하는 경우의 차이점이 무엇일까요?