inflearn logo
강의

Course

Instructor

Creating Nodebird SNS with Vue

초기화면에 기존에 작성된 글이 안 보입니다.

274

gtsmell8728

13 asked

0

현재 아래와 같이 코드를 작성한 상태입니다.

초기화면, 로그인 한 후에 작성된 글이 로딩이 되지 않습니다. 

새로고침을 하면, backend의 /posts에서 정상적으로 posts들을 내려보내주고 있고,

front에서 store/posts.js의 loadPosts에서 정상적으로 값을 받아서, mutations의 loadPosts로 mainPosts에 값이 정상적으로 들어가는 것까지 확인을 했습니다.

그런데 화면에는 보이지 않고, 확대후 스크롤 동작을 해야 게시글이 나타납니다.

=> fetch 함수를 지웠다 저장한 후, 다시 쓰고 저장하고 새로고침을 하면 작성된 글이 보여집니다..

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

<script>
  import PostCard from '~/components/PostCard';
  import PostForm from '@/components/PostForm';

  export default {
    components: {
      PostCard,
      PostForm
    },
    computed: {
      me() {
        return this.$store.state.users.me;
      },
      mainPosts() {
        return this.$store.state.posts.mainPosts;
      },
      hasMorePost() {
        return this.$store.state.posts.hasMorePost;
      }
    },
    fetch({ store }) {
      return store.dispatch('posts/loadPosts');
    },
    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>

aws nodejs vuejs vuex mysql ssr

Answer 7

1

zerocho

로그인한 후에만 로딩이 되지 않나요?

1

zerocho

computed의 mainPosts에 console.log 넣어보세요.

0

gtsmell8728

비교하고 수정 하긴했는데 다시 확인하겠습니다.!

0

zerocho

이것만으로는 파악이 잘 안 됩니다. 제 깃헙 코드와 비교해도 별 차이가 없나요? 코드 수정 후 화면이 보이는 것은 핫리로딩의 결과라서 문제해결에 도움은 안 됩니다.

0

gtsmell8728

이렇게  {{ mainPosts }} 를 한 번 쓰고 저장해야 나타납니다.

0

gtsmell8728

로그인 전과 로그인 한 후에도 똑같습니다.

fetch를 지우고 저장하고, 다시 쓰고 저장하면 그때 나타납니다.

또, template 부분에 를 쓰고  {{ mainPosts }} 저장하면 또 나타납니다.

0

gtsmell8728

computed에서 아래 처럼 입력했습니다. console에 length0 라고 나옵니다.

mutations에 찍었을 경우는 제대로 나옵니다.

computed: {
      me() {
        return this.$store.state.users.me;
      },
      mainPosts() {
        const mainPosts = this.$store.state.posts.mainPosts;
        console.log('mainPosts'mainPosts)
        return mainPosts
      },
      hasMorePost() {
        return this.$store.state.posts.hasMorePost;
     },

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

0

144

1

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

0

327

1

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

0

328

2

실습 환경 문의(Node 버전)

0

364

1

로그인 새로고침시 풀림

0

290

1

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

0

402

1

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

0

440

1

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

0

312

1

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

0

371

1

vsCode에 관한 질문입니다

0

487

1

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

0

342

1

express.static('uploads')

0

342

2

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

0

445

2

<v-lsit-item-title> 에러

0

408

2

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

0

318

1

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

0

384

1

nuxtServerInit 무한 로딩

0

973

3

Nginx Cookie 설정

0

720

2

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

0

291

1

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

0

348

1

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

0

382

1

질문 드립니다!

0

331

2

안녕하세요

0

225

1

궁금한점이있습니다

0

235

1