vue.js - 为什么我的数组在 vuejs 中没有反应?
问题描述
各位晚上好,
我一直在使用 vuejs、nodejs 和 mysql 数据库制作一种社交网络作为个人项目。
基本上,您可以发布一条消息,然后人们可以回复它。我将评论绑定到使用 id 发布。我有两张表:1 条评论和 1 条帖子。如果为帖子编号 38 发布评论,则在 mysql 表中有一个字段 idPost = 38。
通过单击一个按钮,我获得了一个显示帖子所有答案的功能,即:
displayAnswers(id) {
axios.get('http://localhost:3000/wall/answer/get/'+id )
.then(response => {
this.answers = response.data.resultat;
})
.catch(error => {
console.log(error);
})
}
其中 id 是我要显示答案的帖子的 id。
现在,问题是当我添加评论时,我需要刷新页面以查看评论或通过调用 displaypost 函数强制刷新,如下所示:
postAnswer(id) {
let syntaxe = /^[a-z A-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ0-9-]{1,}$/;
if(syntaxe.test(this.answerToPost)) {
let answer = {
message: this.answerToPost,
postId: id,
auteur: this.$store.state.pseudoUser
}
axios.post('http://localhost:3000/wall/post/answer', answer)
.then(response => {
console.log(response);
this.feedbackMessage = response.data.message;
this.isAlert = false;
this.answerToPost = '';
setTimeout(() => {
this.feedbackMessage = ''
}, 2000);
this.displayAnswers(id);
})
.catch(error => {
console.log(error);
this.feedbackMessage = error.response.data.message;
this.isAlert = true;
})
} else {
this.errorMessage = "Le message ne respecte pas la syntaxe autorisée";
return;
}
},
总而言之,我的数据 this.answers 不是被动的。它在应用程序中以这种方式声明:
data() {
return {
Auteur: '',
displayPostAnswers: [],
answerToPost: '',
isAlert: true,
feedbackMessage: '',
answers: ''
}
},
并在我的模板中以这种方式调用,使用v-for
循环显示答案:
<div v-for="answer in answers" :key="answer.id" class="answerDisplayer" >
<div class="containerEachAnswer">
<div class="avatarAuteur">
<img src="../assets/defaultUser.png" width="48" height="48" alt="">
</div>
<div class="answer">
<span>
<strong>{{ answer.auteur }}</strong><br>
{{ answer.message}}
</span>
</div>
</div>
</div>
</div>
我在互联网上查找了这个问题,我找到了这个文档:https ://fr.vuejs.org/v2/guide/reactivity.html 。所以我尝试使用该功能Vue.set
,但它似乎不起作用。
我想知道更有经验的开发人员是否可以帮助我找到另一种方法来使我的数据具有反应性或帮助我以另一种方式进行操作,我尝试了几种方法,但没有奏效。
PS:我尝试使用计算数据,但v-for
不适用于计算数据。
谢谢!
晚上好!
解决方案
由于您尝试在实例中更改此设置,我建议您this.$set(this.someObject, 'b', 2)
按照https://fr.vuejs.org/v2/guide/reactivity.html#Pour-les-objects中的说明进行尝试
此外,您似乎answers
在函数中声明为字符串,请data
尝试将其声明为数组answers: []
推荐阅读
- python - 从计划任务更新 SQLAlchemy 多行不起作用
- crystal-reports - 如何在水晶报表中选择最大值
- javascript - 如何将 JSON 数据转换为 Tabulator 表
- angular - 离线提供静态资产,Angular Universal 中的缓存策略
- php - 在 php mockery 上获取不同的连续值
- python - 使用 colorama 更改 Python 输入的文本颜色
- typescript - Vue相当于表达[GET, POST]
- postgresql - 从 PostgreSQL 中删除未命名的约束
- java - 为什么你可以在没有类型转换的情况下将 long 存储到浮点数中
- networking - SMB - 服务器从不响应会话设置请求