SORU
29 EKİM 2014, ÇARŞAMBA


Nerede ajax isteği Akı uygulama yapılmalıdır?

Flux mimarisi ile react.js bir uygulama yaratıyorum ve sunucudan veri talebi olması gereken yerde anlamaya çalışıyorum. Bunun için herhangi bir örnek var. (TODO uygulaması!)

CEVAP
29 EKİM 2014, ÇARŞAMBA


Zaman uyumsuz yazma işlemi deposunda eylem yaratıcıları ve zaman uyumsuz okuma işlemleri koyarak büyük bir savunucusu değilim. Hedefi tam senkron eylem işleyicileri deposu durumu değiştirme kodu tutmaktır; bu basit akıl ve birim test için basit hale getirir. Önlemek için, birden fazla eşzamanlı istekleri için aynı bitiş noktası (örneğin, çift okuma), edeceğim gerçek isteği işleme ayrı bir modül kullanan vaat önlemek için birden fazla isteği; örneğin:

class MyResourceDAO {
  get(id) {
    if (!this.promises[id]) {
      this.promises[id] = new Promise((resolve, reject) => {
        // ajax handling here...
      });
    } 
    return this.promises[id];
  }
}

Mağaza okur asenkron fonksiyonlar dahil ederken, mağazalar uyumsuz işleyicileri kendilerini güncelleme yok, ama bunun yerine bir eylem ateş ve çok önemli bir uyarı varsadeceyanıt geldiğinde bir eylem ateş. Bu eylem için işleyicileri gerçek durumu değişiklik yapıyor sonunda.

Örneğin, bir bileşen olabilir:

getInitialState() {
  return { data: myStore.getSomeData(this.props.id) };
}

Mağaza bir yöntem, belki de, böyle bir şey uygulamış:

class Store {
  getSomeData(id) {
    if (!this.cache[id]) {
      MyResurceDAO.get(id).then(this.updateFromServer);
      this.cache[id] = LOADING_TOKEN;
      // LOADING_TOKEN is a unique value of some kind
      // that the component can use to know that the
      // value is not yet available.
    }

    return this.cache[id];
  }

  updateFromServer(response) {
    fluxDispatcher.dispatch({
      type: "DATA_FROM_SERVER",
      payload: {id: response.id, data: response}
    });
  }

  // this handles the "DATA_FROM_SERVER" action
  handleDataFromServer(action) {
    this.cache[action.payload.id] = action.payload.data;
    this.emit("change"); // or whatever you do to re-render your app
  }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Associated Press

    Associated P

    18 EYLÜL 2006
  • ASUS North America

    ASUS North A

    12 AĞUSTOS 2008
  • TokShogun

    TokShogun

    6 HAZİRAN 2009