收到数据后如何更新Vue组件

时间:2019-09-23 13:05:37

标签: vue.js

安装组件后,页面上会显示数据。然后,我希望每次用户登录时都能看到我的组件更新(为此,我监听此事件)。现在,我从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));
        }
    }
}

1 个答案:

答案 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呈现。