組件間通信與ajax的請求方式

組件定義與使用

1. vue 文件的組成(3 個部分)

1)模板頁面

<template>
頁面模板
</template>
2)JS 模塊對象

<script>
    export default {
        data() {return {}},
        methods: {},
        computed: {},
        components: {}
    }
</script>

3)樣式

<style>
樣式定義
</style>

2. 基本使用

1)引入組件

2)映射成標簽

3)使用組件標簽

<template>
    <HelloWorld></HelloWorld>
    <hello-world></hello-world>
</template>

<script>
    import HelloWorld from './components/HelloWorld' 
    export default {
        components: { 
            HelloWorld
        }
    }
</script>
3. 關于標簽名與標簽屬性名書寫問題

1)寫法一:一模一樣

2)寫法二:大寫變小寫, 并用-連接

組件間通信

1. 組件間通信基本原則

1)不要在子組件中直接修改父組件的狀態數據

2)數據在哪, 更新數據的行為(函數)就應該定義在哪

2. vue 組件間通信方式

1)props

2)vue 的自定義事件

3)消息訂閱與發布(如: pubsub 庫)

4)slot

5)vuex

組件間通信 1: props

1. 使用組件標簽時

<my-component name='tom' :age='3' :set-name='setName'></my-component>

2. 定義 MyComponent 時

1)在組件內聲明所有的 props

2)方式一: 只指定名稱

props: ['name', 'age', 'setName']
3)方式二: 指定名稱和類型

props: {
name: String, age: Number,
setNmae: Function
}
4)方式三: 指定名稱/類型/必要性/默認值

props: {
name: {type: String, required: true, default:xxx},
}

3. 注意

1)此方式用于父組件向子組件傳遞數據

2)所有標簽屬性都會成為組件對象的屬性, 模板頁面可以直接引用

3)問題:

a.如果需要向非子后代傳遞數據必須多層逐層傳遞

b.兄弟組件間也不能直接 props 通信, 必須借助父組件才可以

組件間通信 2: vue 自定義事件

1. 綁定事件監聽

// 方式一:通過 v-on 綁定
@delete_todo="deleteTodo"

// 方式二:通過 on() this.refs.xxx.$on('delete_todo', function (todo) {
this.deleteTodo(todo)
})

2. 觸發事件

// 觸發事件(只能在父組件中接收)
this.$emit(eventName, data)

3. 注意:

1)此方式只用于子組件向父組件發送消息(數據)

2)問題: 隔代組件或兄弟組件間通信此種方式不合適

組件間通信 3: 消息訂閱與發布(PubSubJS 庫)

1. 訂閱消息

PubSub.subscribe('msg', function(msg, data){})

2. 發布消息

PubSub.publish('msg', data)

3. 注意

優點: 此方式可實現任意關系組件間通信(數據)

4. 事件的 2 個重要操作(總結)

1)綁定事件監聽 (訂閱消息)

目標: 標簽元素 <button>

事件名(類型): click/focus

回調函數: function(event){}

2)觸發事件 (發布消息)

DOM 事件: 用戶在瀏覽器上對應的界面上做對應的操作

自定義: 編碼手動觸發

組件間通信 4: slot

1. 理解

此方式用于父組件向子組件傳遞標簽數據

2. 子組件: Child.vue

<template>
<div>
<slot name="xxx">不確定的標簽結構 1</slot>
<div>組件確定的標簽結構</div>
<slot name="yyy">不確定的標簽結構 2</slot>
</div>
</template>

3. 父組件: Parent.vue

<child>
<div slot="xxx">xxx 對應的標簽結構</div>
<div slot="yyy">yyyy 對應的標簽結構</div>
</child>

vue 項目中常用的 2 個 ajax 庫

1.vue-resource

vue 插件, 非官方庫, vue1.x 使用廣泛

2.axios

通用的 ajax 請求庫, 官方推薦, vue2.x 使用廣泛

vue-resource 的使用

1. 在線文檔

https://github.com/pagekit/vue-resource/blob/develop/docs/http.md

2. 下載

npm install vue-resource --save

3. 編碼

// 引入模塊
import VueResource from 'vue-resource'
// 使用插件
Vue.use(VueResource)

// 通過 vue/組件對象發送 ajax 請求
this.$http.get('/someUrl').then((response) => {
    // success callback 
    console.log(response.data) //返回結果數據
}, (response) => {
    // error callback
    console.log(response.statusText) //錯誤信息
})

axios 的使用

1. 在線文檔

https://github.com/pagekit/vue-resource/blob/develop/docs/http.md

2. 下載:

npm install axios --save

3. 編碼

// 引入模塊
import axios from 'axios'

// 發送 ajax 請求
axios.get(url)
    .then(response => {
        console.log(response.data) // 得到返回結果數據
    })
    .catch(error => { 
        console.log(error.message)
    })

4. 測試接口

接口 1: https://api.github.com/search/repositories?q=v&sort=stars

接口 2: https://api.github.com/search/users?q=aa

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,505評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,556評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,463評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,009評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,778評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,218評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,281評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,436評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,969評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,795評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,993評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,537評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,229評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,659評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,917評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,687評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,990評論 2 374

推薦閱讀更多精彩內容