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‘,