VueJS - V-for 在数据更新后不会重新渲染,需要刷新页面才能看到更改

Posted

技术标签:

【中文标题】VueJS - V-for 在数据更新后不会重新渲染,需要刷新页面才能看到更改【英文标题】:VueJS - V-for doesn't re-render after data is updated and needs page refresh to see the change 【发布时间】:2019-11-08 07:13:16 【问题描述】:

所以这段代码确实添加或删除了一个条目,但是每当我添加或删除时,它不会显示更改或重新渲染。我需要刷新页面以查看发生了哪些变化。

注意:我正在使用 ME(Vue)N 堆栈。

我有这个代码:

<script>
import postService from '../../postService';
export default 
  name: 'postComponent',
  data() 
    return 
      posts: [],
      error: '',
      text: ''
    
  ,
  async created() 
    try 
      this.posts = await postService.getPosts();
    catch(e) 
      this.error = e.message;
    
  ,
  methods: 
    async createPost() 
      await postService.insertPost(this.text)
      this.post =  await postService.getPosts();
      // alert(this.post,"---")
    ,
    async deletePost(id) 
      await postService.deletePost(id)
      this.post = await postService.getPosts();
      
      // alert(this.post)
    
  

</script>
<template>
    <div class="container">
      <h1>Latest Posts</h1>
      <div class="create-post">
        <label for="create-post">input...</label>
        <input type="text" id="create-post" v-model="text" placeholder="Create a post">
        <button v-on:click="createPost">Post</button>
      </div>
      <!-- CREATE POST HERE -->
      <hr>
      <p class="error" v-if="error">error</p>
      <div class="posts-container">
        <div class="post"
          v-for="(post) in posts"
          v-bind:key="post._id"
          v-on:dblclick="deletePost(post._id)"
        >
         `$post.createdAt.getDate()/$post.createdAt.getMonth()/$post.createdAt.getFullYear()`
        <p class="text"> post.username </p>
        </div>
      </div>
    </div>
</template>

抱歉,如果 sn-p 中有错误。我只需要展示代码,我无法让脚本在代码示例 上运行。

任何帮助将不胜感激。 Vuejs 初学者在这里。 此代码是通过 youtube 教程复制和键入的。

【问题讨论】:

【参考方案1】:

您的组件有一个数据属性posts,但您在代码中的多个位置分配给this.post

我怀疑是错字,但也值得记住的是,如果在实例化组件时此附加属性 (this.post) 不可用,则在您创建/分配给它。

【讨论】:

谢谢!!!我找到了。也许我太累了,无法编码,我根本没有注意到错字。诚实的错误。我的错。

以上是关于VueJS - V-for 在数据更新后不会重新渲染,需要刷新页面才能看到更改的主要内容,如果未能解决你的问题,请参考以下文章

VueJS 不会从组件中重新渲染列表

七vue中v-for有时候对页面不会重新渲染,数组变化后如何到渲染页面

VueJs - 避免无用的 v-for 迭代

React Native this.setState() 仅在再次与组件交互后重新渲染

渲染 vueJs 后重新编译模板

服务器上的应用程序更新后如何重新加载 vuejs