1. 程式人生 > >vue 小細節雜記

vue 小細節雜記

###關於[…res] , {…res}
解耦 展開

	msiteFoodTypes(this.geohash).then(res => {
       	  console.log(res);
       		let resLength = res.length;
       		let resArr = [...res]; // 返回一個新的陣列 深拷貝 這兩個陣列所作的操作 不會被幹預
          console.log(resArr);
          res.push("1")
          console.log("--------------------"
); console.log(res); console.log(resArr);

如果res返回的是陣列就使用[…res] 如果是obj物件使用 {…res}。
列印的結果如下所示:
這裡寫圖片描述

可見在res裡面新增資料 ,resArr裡面的資料並不會同步改變,很多時候專案裡面會用到這樣的需求,通過http請求 得到的資料不想被改變 所以就去複製一樣的要求原資料不能被改變!
es6的寫法就如上
es5: JSON.parse(JSON.stringify(res))
###vue檔案裡面訪問其他資料夾下的圖片
有這樣一個需求 圖片不放本地專案的工程目錄裡面 因為壓縮的時候包會很大,所以我們要把大圖片單獨拎出來,放到後臺專案裡面的某個目錄裡 那就涉及到vue裡面的圖片路徑怎麼寫了
比如這個單獨存放圖片的檔案叫做img 跟打包後的dist 放在同一個資料夾,則寫法如下:
寫成動態的:src
這裡寫圖片描述

這裡寫圖片描述

###vuex
store.js store已經全域性註冊了(main.js)使用this.$store 不用每個頁面單獨引入store.js檔案了

import store from './store';
new Vue({
  router,
  store,
  render: h => h(App),
}).$mount('#app');
import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    userlogin: false,
  },
  mutations: {
    SETUSERLOGIN(state, loginState) { // 大寫
      state.userlogin = loginState;
      // console.log(state.userlogin);
    },
  },
  actions: {
    setUserLogin({ commit }, loginState) { // 小寫
      commit('SETUSERLOGIN', loginState);
    },
  },
});

元件:

<template>
	<div>
	<!-- 可在此觀看監聽的狀態 -->
		{{userlogin}} 
	</div>
</template>
import {mapState, mapMutations} from 'vuex'
  mounted() {
    console.log(this.userlogin);
    // if(!this.userlogin){
    //   this.$router.push({
    //     name: 'login',
    //   });
    // };
    setInterval(()=>{ // 自己創造監聽條件
      const t = !this.userlogin;
      this.SETUSERLOGIN(t);
      console.log(this.userlogin)
    },2000);
  },
  watch: { // 監聽的就是data變數  監聽state變化
    userlogin() { // 函式的名字就是 對應的data/(vuex store state)裡 變數的名字 
      console.log(this.userlogin);
    }
  },
  computed: {
    // ...mapState([
    //     'userlogin'
    // ]),
    等價於
    // userlogin() {
    //   return this.$store.state.userlogin
    // },
  },
 methods: {
    // ...mapMutations([
    //   'SETUSERLOGIN',
    // ]),
    等價於
    // SETUSERLOGIN(loginstate) {
    //   this.$store.commit('SETUSERLOGIN', loginstate);
    // },
    toLoginClick() {// 跳轉到login頁面
      this.SETUSERLOGIN(true);
      console.log(this.userlogin);
    },
	以上是使用mutations (commit)


	下面是使用actions (dispatch)
	toLoginClick() {// 跳轉到login頁面
      this.$store.dispatch('setUserLogin', true);
      console.log(this.userlogin);
    },
    等價於:
    ...mapActions([
      'setUserLogin',
    ]),
    toLoginClick() {// 跳轉到login頁面
      this.setUserLogin(true);
      console.log(this.userlogin);
    },
	
  }, 

promise , promise鏈 與 async await 的使用

export default {
  data() {
    return ({
    });
  },
  mounted() {
    this.queryFun().then(()=>{
      console.log('--------執行完之後走的路')
    });
    this.queryFun1();
  },
  },
  methods: {
    queryFun(){
     return new Promise((resolve, reject)=>{
      this.$api.query().then((res)=>{
        console.log('-----------promise',JSON.parse(res));
        resolve(true)
      }).catch((error)=>{
        console.log(error);
      })
     });
    },
    async queryFun1(){
      try {
        const response = await this.$api.query();
        console.log('-----------await-response',JSON.parse(response))
      } catch (error) {
        console.log(error)
      }
    },
  },
};

相關推薦

vue 細節雜記

###關於[…res] , {…res} 解耦 展開 msiteFoodTypes(this.geohash).then(res => { console.log(res); let resLength = res.

vue細節

模塊化 clas data function doc 實例名 title methods sel 1.vue.js裏的vm: 實例名稱~vm ~他是new出來的, var vm=new Vue({}) var app =new Vue({}) 官方api用的vm

vue細節(4)

css 中 not選擇器的用法: 通過not選擇器摺疊面板,element-ui中修改el-menu屬性,要通過.sidebar-el-menu拿到,通過.el-menu--collapse拿到el-menu裡的class <div class="slidebar" > &

關於vue一些容易出錯的細節

per 控制臺 需要 .... 一個 出現 強調 prop 關於 當我們實現一個vue功能的時候,可能會遇到這樣的問題,表面上你的頁面運行沒有任何問題,而且功能也都能實現,但是打開控制臺的時候,會看到“ property of ‘xxx‘ undined”等.....一般解

Vue.js 和 MVVM 細節

冗余 touch one 提高 初始化 分享 問題 函數 為什麽 MVVM 是Model-View-ViewModel 的縮寫,它是一種基於前端開發的架構模式,其核心是提供對View 和 ViewModel 的雙向數據綁定,這使得ViewModel 的狀態改變

vue一些細節

1.在vue組建中,每個元件的data都是function,返回一個物件,這樣每個元件的data都是獨立的一個物件,不會相互影響。 2.$ref在vue獲取當前元素的索引,也就是dom物件,類似document。getelementbyid如果是在元件上,獲取的是這個元件,

css細節羅列

step end ext title images 半徑 tran meta 需求 有空時候把一些常見可能不是每個人都知道的css小細節總結了下,共勉。 1.line-height 眾多周知,line-height是行高的意思,我們時常會使用類似line-height:

spring中set註入的一些細節錯誤

學習 細節 borde 集合 south let odi 桂林 代碼 這是小白偶爾一直null指針的錯誤,調試了好久,原來是自己對spring註入的不夠了解 我相信有很多跟我差不多的初學者會遇上,所以特地寫出來,防止有人跟我一樣。哈哈,也寫上去,以防自己下次還犯這樣的錯誤。

JavaScriput的一些細節

cond bsp demo ren setattr 內置 內置對象 h+ 生成 創建一個節點 window.onload=function(){ var demo=document.getElementById("demo"); //獲取第一個按鈕索引為0 var btn=

Oracle 12cR2 安裝時的細節

oracle 12cr2 註意到了Oracle database在12c release 2 OUI安裝時的幾個小細節,記錄如下:1. 在DBCA向導中,默認會指定創建一個orcl CDB數據庫以及一個orclpdb的可插拔數據庫。而在之前的版本中,這塊都是需要你自己填寫的。這麽說吧,就是想法設法

unity 轉 iOS細節

cnblogs bsp unit logs .com blog 細節 alt unity unity 轉 iOS小細節

vue荔枝,時間控件,動態按月份增減。

input lang fun today 3.0 .get lan substr ocl 依賴框架有jq,bootstrap3.0,vue2.0; 自封裝(搬運)時間控件,bootstrap-datetimepicker。資源下載:看這裏 需求: 默認本地時間,相隔一

項目細節

技術 數據庫 ack 字符 com 對象 arc color 表格 今天我犯了一個很愚蠢的錯誤,先記錄下來以防自己以後再犯,我在通過ssm框架編寫程序的時候去測試是否搭建成功是,我在瀏覽器中測試了一下,我輸入的地址是這樣的: 註意我雖然數據庫表格上面id是設置的varcha

JS-- 細節--你悟到了什麽?

func 1.0 data return rop turn per math.sqrt var var p = {// x and y are regular read-write data properties.x: 1.0,y: 1.0,r:function () {

css細節總結

ott 內容 left fault -1 isa 單元格 :hover javascrip css小細節總結 1、用max-width來防止圖片撐破容器 img{   display: inline-block;   max-width: 100%; } 2、用pointe

Vue-demo、效果 合集(更新中...)

lin auto isa hover json () add ole bce (騰訊課堂學習小demo:https://ke.qq.com/course/256052) 一、簡單的指令應用 ——打擊滅火器 圖片素材點擊騰訊課堂的鏈接獲取 html: 1 &

[20171120]bash使用here documents的一個細節.txt

細節 tin mon sin com 如果 subst bash turned [20171120]bash使用here documents的一個小細節.txt--//昨天看bash文檔,,發現一些小細節,做一個記錄,就是EOF加引號的問題.command <<

boostrap框架細節

ati cati onf boost normalize cte 保存 log 內容 1、Boostrap模態框保存後隱藏 1 $("#vacationmodel").modal(‘hide‘); 2、Boostrap模態框保存後第二次點擊顯示舊數據 //在保存按鈕事

rsync源目錄寫法的一點細節

-c pro spa direct 目錄 ogre div res 成了 原始狀態: [root@localhost tmp]# tree . ├── a │ ├── a1 │ └── a2 └── b 2 dir

程序 雜記

con itl api ast load title test blog 打印 調試打印測試的方法:   方法1、顯示提示框 (微信自帶的API) wx.showToast({ title: ‘成功‘, icon: ‘success‘,