inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

따라하며 배우는 노드, 리액트 시리즈 - 유튜브 사이트 만들기

비디오 디테일 페이지 만들기

안녕하세요 setState 실행 순서가 조금 이상해서 질문남겨요...

284

작성자 없음

작성한 질문수 0

0

안녕하세요 양질의 수업을 무료로 오픈해주셔서 항상 공부 잘하고 있습니다. 이번에 클론 코딩 진행하면서 setState 부분이 조금 이상해서 질문 드려요

import React, { useEffect, useState } from 'react'
import Axios from 'axios';
import { Row, Col, List, Avatar } from 'antd'

function VideoDetailPage(props) {

    const videoId = props.match.params.videoId;
    const VideoVariable = { videoId: videoId };

    const [Video, setVideo] = useState([])

    useEffect(() => {
        Axios.post('/api/video/getVideo', VideoVariable)
            .then((res) => {
                if (res.data.success) {
                    setVideo(res.data.video);
                    console.log('state 업데이트 완료')
                } else {
                    alert('비디오 정보 로딩 실패');
                }
            })
    }, []);

    if (Video.writer) {
        return (
            <Row gutter={[16, 16]}>
                <Col lg={18} xs={24}>
                    <div style={{ width: '100%', padding: '3rem 4em' }}>
                        <video style={{ width: '100%' }} src={`http://localhost:5000/${Video.filePath}`} controls></video>
                        <List.Item
                        // actions={[<LikeDislikes video videoId={videoId} userId={localStorage.getItem('userId')}  />, <Subscriber userTo={Video.writer._id} userFrom={localStorage.getItem('userId')} />]}
                        >
                            <List.Item.Meta
                                avatar={<Avatar src={Video.writer && Video.writer.image} />}
                                title={<a href="https://ant.design">{Video.title}</a>}
                                description={Video.description}
                            />
                            <div></div>
                        </List.Item>

                        {/* <Comments CommentLists={CommentLists} postId={Video._id} refreshFunction={updateComment} /> */}

                    </div>
                </Col>
                <Col lg={6} xs={24}>
                    side video
                        {/* <SideVideo /> */}

                </Col>
            </Row>
        )
    } else {
        console.log(Video, '후후')
        return <div>
            Loading... ??
        </div>
    }
}

export default VideoDetailPage

이게 제 코드구요 실행하면 아래의 else 부분의 후후먼저 실행되고 위의 setVideo가 실행됩니다.

그래서 에러가 발생해 detail 페이지로 가지않고 다시 landing 페이지로 넘어옵니다

비동기 처리때문인가 싶어 setVideo를 콜백의 형태로 남겨서 동기처리 할수있다길래 해봐도 안되고, useEffect 아래 input 리스트에 Video를 넣어보기도 했는데 잘 안되네요 ㅠㅠ

https://github.com/dnfwlxo11/mini_youtube

이게 제 풀 코드입니다.

component 코드들이랑 index.js 코드랑 몇번이나 본지 모르겠어요 이유가 뭘까요?

nodejs mongodb redux react

답변 0

npm i하면 바로, 라이브러리 오류없이 받아지고, 구동되는 소스는 없나요?

0

62

1

ERROR in ./node_modules/antd/es/version/index.js 2:15-22

0

228

1

자료 없음

0

336

1

이미지 깨짐

0

355

1

npm run dev 동작 에러

0

315

1

npm run dev 동작 에러

0

301

1

npm run dev 동작에러납니다...

0

667

1

npm run dev 실행 오류

0

663

1

비디오 업로드, 로그인, 회원가입 504 error

0

1063

1

시작부터 오류생기시는 분들 해결법입니다.

1

478

1

오류 해결 공유

0

473

1

npm install 에러 질문드립니다.

0

1138

2

아예 몽고DB에 연결한다고만 하고 연결이 안되고 있습니다.

0

556

1

해당 오류 해결 방법 좀 알려주세요 ㅠㅠ

0

538

1

로컬스토리지에 대한 질문입니다!!

0

518

0

video가 안 나타나는 문제

0

903

1

ffmpeg 설치 후 cannot read property 'format' of undefined 500 에러 해결

0

480

0

typeError or 콘솔 500 뜨는분..

0

341

0

npm run dev 관련 오류

0

582

1

답글이 달리지않고 디비에도 저장되지않으며 새로고침이 됩니다.

0

252

0

useState 자동 생성

0

349

1

TypeError: Cannot read properties of undefined (reading 'format')

0

1256

2

userData undefined / state에 user.userData가 없습니다.

0

252

0

antd Input background color 변경

0

246

0