Почему мой магазин Fluxible не обезвоживает?

У меня довольно простой магазин Fluxible:

export default class NoteStore extends BaseStore {
  static storeName = "NoteStore";

  static handlers = {
    [Actions.NEW_NOTES_FETCHED]: 'handleNewNotes'
  };

  constructor(dispatcher) {
    super(dispatcher);
    this.notes = [];
  }

  handleNewNotes(notes) {
    this.notes = [];
    var i;
    for (i = 0; i < notes.length; i++){
      this.notes.push(notes[i].content);
    }
    this.emitChange();
  }

  /* ... */

  dehydrate() {
    return { notes: this.notes };
  }

  rehydrate(state) {
    this.notes = state.notes;
  }

  // Shouldn't be necessary to override?
  shouldDehydrate() {
    return true;
  }
}

NEW_NOTES_FETCHED отправляется действием, которое получает данные из моего внутреннего API, и хранилище прослушивает это событие и извлекает данные из полезной нагрузки. Насколько я могу судить, все это работает, потому что все работает отлично при работе на клиенте.

У меня проблема в том, что NoteStore, кажется, не становится обезвоженным, когда сервер вызывает app.dehydrate(), Я смотрю на JSON, встроенный в страницу, и нигде не вижу своего магазина, хотя вижу информацию для RouteStore.

Я зарегистрировал свой магазин в FluxibleContext, но нужно ли мне что-то делать дополнительно, чтобы добавить его в цепочку дегидрата?

Загрузочный код приложения, если уместно:

const app = new Fluxible({ component: Root });

const AppRouteStore = RouteStore.withStaticRoutes(routes);
app.registerStore(AppRouteStore);  // AppRouteStore appears in dehydrated JSON

app.registerStore(HtmlHeadStore); // Neither of these do, though HtmlHeadStore doesn't need to
app.registerStore(NoteStore);

export default app;

1 ответ

Решение

Хорошо, я понял, что случилось. В основном, действие, которое должно было отправить NEW_NOTES_FETCHED Событие не возвращало обещание, и поэтому логика обработки ответа от внутреннего сервера никогда не выполнялась, хотя сам запрос был выполнен, и я увидел, что он появился в журналах внутреннего интерфейса.

Я собирался вырвать свои волосы, ломая голову над этим так долго, так что, надеюсь, кто-то может извлечь уроки из моей борьбы!

Другие вопросы по тегам