vue为什么会访问两次后端接口呢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue为什么会访问两次后端接口呢相关的知识,希望对你有一定的参考价值。

参考技术A 使用vue.js与后台实现数据交互的方法是利用vue-resource组件提供的一系列api:
get(url, [data], [success], [options])
post(url, [data], [success], [options])
put(url, [data], [success], [options])
patch(url, [data], [success], [options])
delete(url, [data], [success], [options])
jsonp(url, [data], [success], [options])

具体举例如下:
1、导入vue-resource

2、基于全局Vue对象使用http
// 通过someUrl获取后台数据,成功后执行then的代码
Vue.http.get('/someUrl', [options]).then(successCallback, errorCallback);
3、在一个Vue实例内使用$http
// $http是在vue的局部范围内的实例
this.$http.get('/someUrl', [options]).then(successCallback, errorCallback);
说明:
在发送请求后,使用then方法来处理响应结果,then方法有两个参数,第一个参数是响应成功时的回调函数,第二个参数是响应失败时的回调函数。
参考技术B 也有一种可能,你在某些监听状态的地方加了调用index接口的方法, 会导致当你的state更新后调用接口 参考技术C 笑死我了,人家说接口,你说异步回调,
浏览器安全机制,在非简单请求之前,先发出一个options请求,只要响应了,即浏览器认为安全可访问,这时候才发出正式请求。所以你看到的是两个请求。

Vuetify 导航抽屉仅在单击两次后才关闭

【中文标题】Vuetify 导航抽屉仅在单击两次后才关闭【英文标题】:Vuetify navigation drawer closing only after item is clicked twice 【发布时间】:2019-09-08 05:29:18 【问题描述】:

我对 Vue 很陌生,所以我不知道如何检查这个,但是 我的 vue v-navigation-drawer 在下面,它位于 app-root.vue 中。起初它可以工作,当您单击抽屉项目时关闭,但现在您必须单击两次才能关闭它。

第一次单击将您带到页面,然后第二次单击关闭抽屉。仅供参考 - 如果我已经在页面上,然后单击它一次将关闭它。

我在调试器中没有看到任何错误。

这是我的抽屉和脚本

export default 
  data() 
    return 
      drawer: false,
    
  ,
  computed: 
    isPageLoading: 
      get() 
        return this.$store.state.appRoot.isPageLoading
      ,
      set(value) 
        this.$store.commit('appRoot/isPageLoadingUpdate', value)
      
    ,
  
<template>
    <div id="app">
        <v-app id="inspire">
            <v-navigation-drawer fixed temporary disable-resize-watcher v-model="drawer" app>
                <v-subheader class="mt-3 grey--text text--darken-1">ENTRY</v-subheader>
                <v-list dense>
                    <v-list-tile @click="drawer = !drawer" to="/entry/records">
                        <v-list-tile-content>
                            <v-list-tile-title>Records</v-list-tile-title>
                        </v-list-tile-content>
                    </v-list-tile>
                    <v-list-tile @click="drawer = !drawer" to="/entry/coworkers">
                        <v-list-tile-content>
                            <v-list-tile-title>Coworkers</v-list-tile-title>
                        </v-list-tile-content>
                    </v-list-tile>
                    <v-list-tile @click="drawer = !drawer" to="/entry/defendants">
                        <v-list-tile-content>
                            <v-list-tile-title>Defendants</v-list-tile-title>
                        </v-list-tile-content>
                    </v-list-tile>
                    <v-list-tile @click="drawer = !drawer" to="/entry/documentjobs">
                        <v-list-tile-content>
                            <v-list-tile-title>Document Jobs</v-list-tile-title>
                        </v-list-tile-content>
                    </v-list-tile>
                    <v-list-tile @click="drawer = !drawer" to="/entry/jobsites">
                        <v-list-tile-content>
                            <v-list-tile-title>Jobsites</v-list-tile-title>
                        </v-list-tile-content>
                    </v-list-tile>
                    <v-list-tile @click="drawer = !drawer" to="/entry/locations">
                        <v-list-tile-content>
                            <v-list-tile-title>Locations</v-list-tile-title>
                        </v-list-tile-content>
                    </v-list-tile>
                    <v-list-tile @click="drawer = !drawer" to="/entry/products">
                        <v-list-tile-content>
                            <v-list-tile-title>Products</v-list-tile-title>
                        </v-list-tile-content>
                    </v-list-tile>
                    <v-list-tile @click="drawer = !drawer" to="/entry/ships">
                        <v-list-tile-content>
                            <v-list-tile-title>Ships</v-list-tile-title>
                        </v-list-tile-content>
                    </v-list-tile>
                    <v-list-tile @click="drawer = !drawer" to="/entry/sources">
                        <v-list-tile-content>
                            <v-list-tile-title>Sources</v-list-tile-title>
                        </v-list-tile-content>
                    </v-list-tile>
                    <v-list-tile @click="drawer = !drawer" to="/entry/witnesses">
                        <v-list-tile-content>
                            <v-list-tile-title>Witnesses</v-list-tile-title>
                        </v-list-tile-content>
                    </v-list-tile>

                    <v-divider dark></v-divider>

                    <v-subheader class="mt-3 grey--text text--darken-1">ADMIN</v-subheader>
                    <v-list-tile @click="drawer = !drawer" to="/Admin/Users">
                        <v-list-tile-content>
                            <v-list-tile-title>Users</v-list-tile-title>
                        </v-list-tile-content>
                    </v-list-tile>
                    <br />
                </v-list>
            </v-navigation-drawer>
            <v-toolbar color="indigo" dark fixed app>
                <v-toolbar-side-icon @click.stop="drawer = !drawer"></v-toolbar-side-icon>
                <v-toolbar-title>Mpid2</v-toolbar-title>
            </v-toolbar>
            <v-content>
                <router-view></router-view>
            </v-content>
            <v-footer fixed app  style="min-height: 0">
                <!--<v-progress-linear :active="isPageLoading" class="ma-0" :indeterminate="true"></v-progress-linear>-->
            </v-footer>
        </v-app>
    </div>
</template>

【问题讨论】:

你能提供一个有效的小提琴或codepen吗? 我有类似的问题。需要点击两次才能切换抽屉。 【参考方案1】:

我将抽屉:@click.stop 更改为 @click.native,现在可以使用了。

【讨论】:

以上是关于vue为什么会访问两次后端接口呢的主要内容,如果未能解决你的问题,请参考以下文章

为啥在并行子进程之间分叉两次后 pipe() 不工作?

为啥 RecyclerView 项目在点击两次后才改变背景颜色?

为啥 QtSerialPort 在运行超过一次或两次后不会读取?

使用axios发送请求,遇到会发两次的情况

播放两次后动态声音不播放

jQuery $.post() 执行两次后的 php 代码