目前我还处于初学者阶段,正在学习VUE.

目前,我所要做的就是重新加载(重新呈现)表,以便将来自db.json文件的更改应用于屏幕上的表.我创建了一个模型,一旦单击保存按钮,就会将数据(姓名、邮箱、联系人)添加到db.json文件中.

然而,问题是我必须手动重新加载页面(通过按ctrl+R),以便将更改后的数据应用到表中.

以下是"modal.vue"文件(子组件)的脚本部分


<script>
export default {
  name: "TeamAddModal",
  props: {
    visible: Boolean,
    variant: String,
  },
  data() {
    return {
      openClose: this.visible,
      memberName: "",
      memberEmail: "",
      memberContacts: "",
    };
  },
  methods: {
    showModal() {
      this.openClose = !this.openClose;
    },
    handleSave() {
      if (this.memberName.length > 0) {
        console.log(this.memberName, this.memberEmail, this.memberContacts);
        this.openClose = !this.openClose;
        let userData = {
          name: this.memberName,
          email: this.memberEmail,
          contacts: this.memberContacts,
        };
        fetch("http://localhost:3000/teaminfo", {
          method: "POST",
          headers: { "Content-Type": "application/json" },
          body: JSON.stringify(userData),
        })
          .then(() => {
            this.$router.push("/");
          })
          .catch((err) => console.log(err));
        this.memberName = "";
        this.memberEmail = "";
        this.memberContacts = "";
      }
    },
  },
  watch: {
    visible: function (newVal, oldVal) {
      this.openClose = newVal;
      console.log("new" + newVal + "==" + oldVal);
    },
  },
};
</script>

我希望父组件(带有表)在从模式中单击‘保存’按钮后重新呈现并显示json数据中的更改.

我试着在谷歌和YouTube上搜索解决方案,似乎:Key可能会起作用,但我不确定这是否真的是解决方案.我将非常感谢你的帮助.

推荐答案

在保存时从POST方法API调用获得成功响应后,可能会有两个解决方案:

  • 您可以将用户数据对象从模式组件emit传递到父组件,并将这个发出的对象推送到表数据数组中.
  • 在成功保存时,您可以从模式组件到父组件emit个成功标志,然后调用GET调用从API本身接收实时数据,并将整个数据绑定到表中.

在模式组件:

handleSave() {
    ...
    ...     
    let userData = {
        name: this.memberName,
        email: this.memberEmail,
        contacts: this.memberContacts,
    };
    fetch("http://localhost:3000/teaminfo", {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify(userData),
    })
    .then(() => {
        this.$emit('save-success'); ✅
        this.$router.push("/"); ❌
    })
}

在父组件:

<modal-component @save-success="getTableData"></modal-component>

getTableData() {
  // Make an API call to get the real time updated data and assign that to the table data items variable.
}

Vue.js相关问答推荐

Vuetify快速失败不会阻止发送表单

如何只提取一次用于无线电组过滤的数据,而不是针对数据库中的每个条目提取数据?

VueI18n 无法读取或更改组合 API 中的区域设置

Vuetify 3 改变 Select 的 colored颜色

为什么普通对象在 Vue3 中自动变成响应式的?

在 Ajax 函数中访问 Vue.js 组件属性

VueJs this.method 不是函数?如何在 Vuejs 的另一个方法中调用一个方法?

如何在异步功能上使用 debounce?

如何为 Vue 应用提供 robots.txt

单击复选框后,V-model 未更新

如何将 vuetify 2.0 beta 安装到新的 vue cli 项目中?

在加载数据之前触发mounted方法 - VueJS

Vue 3:模块 '"../../node_modules/vue/dist/vue"' 提示

使用 nuxt,如何将路由名称放在页面标题中?

如何从 vue-apollo 中访问 this.$route?

Vue如何将动态ID与v-for循环+字符串中的字段连接起来?

如何在 NuxtJS 中设置全局 $axios 标头

克隆元素并附加到 DOM 的正确方法

$emit 不会触发子事件

如何访问通用 javascript 模块中的当前路由元字段