安装组件后,页面上会显示数据。然后,我希望每次用户登录时都能看到我的组件更新(为此,我监听此事件)。现在,我从DB获得数据,并且在div“ ip”中获得了登录用户。但是我打算将此新数据动态添加到我已经接收的数据中。如何动态更新数据?我想使用新插入的用户获取页面,而无需刷新页面。此登录用户出现在此处,并且仅在刷新页面后才会添加到该用户。我想获取它而不需要刷新页面。这是关于用新道具重新渲染组件。
在模板中
<div v-for="user in users">
<div class="card-header">{{ user.ip }}</div>
<div class="card-header">{{ user.name }}</div>
</div>
<div v-html="ip"></div>
在脚本中
export default {
data() {
return {
users: [],
ip: ''
}
},
mounted() {
window.Echo.channel('channelName')
.listen('eventIp', (e) => {
this.ip = e
}),
this.fetchData()
},
methods: {
fetchData() {
axios
.get('api/person')
.then(response => (this.users = response.data))
.catch(error => console.log(error));
}
}
}
答案 0 :(得分:0)
如果eventIp只是一个ip:
<div v-for="user in users">
<div class="card-header">{{ user.ip }}</div>
<div class="card-header">{{ user.name }}</div>
<div v-if="ip==user.ip">online</div>
</div>
如果eventIp包含多个在线ip:
<div v-for="user in users">
<div class="card-header">{{ user.ip }}</div>
<div class="card-header">{{ user.name }}</div>
<div v-for"userIp in ip">
<span v-if="userIp==user.ip">online</span>
</div>
</div>
已更新: 正如您在评论中解释的那样,您需要收听频道。此链接https://pusher.com/tutorials/todo-vue-laravel#building-vue-components是本教程的好部分。
创建新用户时,您需要在频道中添加更多新用户数据并将其添加到users变量。自动查看以html呈现。