我卡試圖弄清楚如何寫一個通量商店,從我的使用altjs創建從API
import $ from 'jquery';
const utils = {
myProfile:() => {
return $.ajax({
url: '/myProfile',
type: 'GET'
});
}
};
這是快遞API在短短獲取數據工作的行動獲取數據的altjs通量店我相信我應該寫我的GET請求只抓取用戶的配置文件(這應該返回一個帶有用戶信息的json)。
然後我的商店:
import UserActions from 'actions/UserActions';
import alt from 'altInstance';
class UserStore {
constructor() {
this.userProfile = [];
this.on('init', this.bootstrap);
this.on('bootstrap', this.bootstrap);
this.bindListeners({
fetchUserProfile: UserActions.FETCHUSERPROFILE,
});
}
fetchUserProfile(profile) {
this.userProfile = profile;
}
}
export default alt.createStore(UserStore, 'UserStore');
但是動作就是我是最無能的
import alt from 'altInstance';
import UserWebAPIUtils from 'utils/UserWebAPIUtils';
fetchProfile(){
this.dispatch();
UserWebAPIUtils.getProfile()
//what do we do with it to let our store know we have the data?
});
}
}
}
的所有IM試圖做的,是從服務器獲取數據,告訴我的商店我們已經收到數據並用我們的api中的數據填充用戶配置數組,並且用於告訴我們的商店是通過屬於「操作」正確的調度員的信使?我已經看了很多教程,但對於我如何思考這個問題我仍然沒有很自信。如果我想通過POST請求更新數據會怎麼樣?
非常感謝你,這是真的清楚觸發這兩個動作,所以我只是要檢討它又一次1.我們通過初始化一個空數組來設置我們的存儲區(就像我們將會做出反應一樣),然後我們有一些東西來處理獲取用戶配置文件的操作,但是由於它的異步我們需要數據結構我們開始,當我們結束時,當然有一個錯誤,如果有事情中斷。然後在我們的行動中,我們從那裏調度並調用我們的API。由於我的ajax調用它會被.done和.fail而不是.then和.catch,但如果它是一個es6的承諾,那會是對的? – Karan
你的理解聽起來很合理。當數據/錯誤返回或最初請求數據時,商店會記錄調用的回調函數。該操作最初調用API,並通知商店加載請求已進入,然後稍後調度由AJAX請求返回的數據或錯誤,這些回調已被註冊。是的,我想如果你使用jQuery的Ajax然後.done和.fail是正確的方法。 – noveyak
其實他們建議把它放在商店:http://alt.js.org/docs/async/ @noveyak – Burimi