2015年11月17日 星期二

ParseReact實作(四)--輸入地址就更新地圖

在上一篇我們指定死的座標給地圖成功之後,現在我們要動態去更改它的座標位置,當然第一步我們要先把Map.js中的程式碼全部都變成繼承TodoList.js傳入的參數,將原來的數字部分都改成this.prop.參數名稱。



再從TodoList.js去處理傳入的參數。
首先,第一個問題就是,我們是要從parse的table中取出資料,而不是在輸入的時候讀入資料,TodoList.js的結構是先query再render顯示
那observe()是哪裡來的?又是做什麼?
我們來看到ParseReact的document

https://github.com/ParsePlatform/ParseReact/tree/master/docs/api

在當中我們可以看到有細分許多,例如ParseReact.Mixin 還有 ParseReact.Mutation等等,看過之後我在Mixin中發現了observe(),意思就是說ParseReact中有一個Mixin的class中有一個observe function,追溯下去他的功能,我們在library中的Mixin.js中定義出observe()是一個query的必要function,傳入的參數是props跟state,也就是query起初的定義function,你要是不定義會有error message

'Components using ParseReact.Mixin must declare an observe() method.'

前提是!!!!這是export default class TodoList extends ParseComponent 才能用的喔,如果是一般的React .createclass是沒有這個function可以使用的。

在上面的程式碼可以看到我們將TodoItem這個加入條件後的query指給items,然後在render的地方使用this.data.items.map(function(i) show出所有的items,可是我只有一個地圖啊,我只能傳一次參數給map不然會show出超多map,要怎麼樣讓query只傳一個object給items呢?

沒錯!!!!利用parse的limit(數量),在這之前我們也試過用first(),可是first是一個需要回傳的function,我們其實只需要一個條件就夠了,沒辦法在裡面再加一個function,於是我們就在observe裡面放了兩個query~~~~一個給List show出來用,一個給Map的參數用。



然後在render的地方傳給他們


其實到這裡我還是有兩個問題:
第一:傳給map()的是object(也就是i),為什麼只要傳給他object就可以自動找出誰是lat誰是lng呢?
object log出來長這樣

第二:observe()是建立了query沒有錯,可是在哪裡執行?沒有query.find()也沒有query.first(),到底怎麼執行的?

但是還是成功了~~~~

耶嘿~~~~~~~~
請專業的大家幫我想一想到底答案是啥,我會萬分億分感謝您!!!!

沒有留言:

張貼留言