inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Vue로 Nodebird SNS 만들기

5-2. 게시글 불러오기

fetch가 실행이 되지 않아서 질문드립니다

231

문종현

작성한 질문수 28

0

fetch({store}) {
        return store.dispatch('posts/loadPosts')
   },

이런식으로 pages/index.vue에 해놨는데 처음에는 스크롤 함수에 있는 

onScroll() {
            if(window.scrollY + document.documentElement.clientHeight > document.documentElement.scrollHeight - 300) {
                if(this.hasMorePost) {
                    this.$store.dispatch('posts/loadPosts')
                }
            }
       }

이거 때문에  스크롤 해야 loadPosts가 불리고 
Duplicate keys detected: '4'. This may cause an update error 이러한 에러가 뜨면서 중복되서 잠시 온스크롤 함수를 주석처리 해놓고 보니 fetch가 아예 실행이 안되더라구요

도대체 어떤문제인지 햇갈려서 알수 없어서 ㅜ 연락드립니다.

<template>
<v-container>
    <post-form v-if='me' />
    <div>
            <post-card v-for="p in mainPosts" :key="p.id" :post="p" />
    </div>
</v-container>
</template>

<script>
import PostForm from '~/components/PostForm'
import PostCard from '~/components/PostCard'
export default {
    components: {
        PostForm,
        PostCard,
    },
    data() {
        return {
            name 'Nust.js'
        }
    },
    fetch({store}) {
        return store.dispatch('posts/loadPosts')
    },
    computed: {
        me() {
            return this.$store.state.users.me
        },
        mainPosts() {
            return this.$store.state.posts.mainPosts
        },
        hasMorePost() {
            return this.$store.state.posts.hasMorePost
        }
    },
    mounted() {
        window.addEventListener('scroll'this.onScroll)
    },
    beforeDestroy() {
        window.removeEventListener('scroll'this.onScroll)
    },
    methods: {
        onScroll() {
            if(window.scrollY + document.documentElement.clientHeight > document.documentElement.scrollHeight - 300) {
                if(this.hasMorePost) {
                    this.$store.dispatch('posts/loadPosts')
                }
            }
        }
    }
}
</script>

<style>

</style>

참고하실 풀 index.vue 코드 보내드려요! 

ssr mysql vuex nodejs vuejs aws

답변 1

0

제로초(조현영)

데브툴에서 같은 데이터를 두 번 불러온 것은 아닌지(키가 4인 것이 힌트입니다) 확인해보세요.

0

문종현

예 감사합니다 제로초님!!

fetch를 통해 loadPost가 불린게 아니고, onScroll 함수를 통해서 스크롤을 움직일때 불렸던 거네요!

fetch를 통해 불리게 하려면 store/posts의 action 안에 loadPost 에 async를 달아 놓으니 제로초님 처럼 문제 없이 됩니다

혹시 같은 문제 있다면 참고해주세요~^^

npm run dev 할 때 에러가 발생합니다.

0

156

1

해당 강의는 리뉴얼 예정은 따로 없나요?

0

341

1

강의는 언제까지 업데이트 된 내용인가요?

0

339

2

실습 환경 문의(Node 버전)

0

376

1

로그인 새로고침시 풀림

0

304

1

안녕하세요! 로그인 유지 질문 드립니다!

0

413

1

웹 서버 관련해서 질문드립니다.

0

450

1

버전때매 질문 드립니다!!

0

319

1

이 강의는 vue3는 아닌가요??

0

380

1

vsCode에 관한 질문입니다

0

495

1

v.trim()이 타입에러가 뜹니다...

0

348

1

express.static('uploads')

0

351

2

STRING이 인식이 안되는데 이유알수있을까요?

0

455

2

<v-lsit-item-title> 에러

0

416

2

vue cli 를 실무에서도 사용하지 않으시나요?

0

326

1

선생님 처음 환경 셋팅 관련 문의드립니다.

0

392

1

nuxtServerInit 무한 로딩

0

985

3

Nginx Cookie 설정

0

736

2

상태가 204번인경우에는 어떻게 처리를 해야하나요?

0

301

1

선생님 nuxt 관련질문드립니다.

0

357

1

인덱스 비교로 삭제해도 될까요?

0

386

1

질문 드립니다!

0

335

2

안녕하세요

0

231

1

궁금한점이있습니다

0

241

1