Почему мой магазин 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
Событие не возвращало обещание, и поэтому логика обработки ответа от внутреннего сервера никогда не выполнялась, хотя сам запрос был выполнен, и я увидел, что он появился в журналах внутреннего интерфейса.
Я собирался вырвать свои волосы, ломая голову над этим так долго, так что, надеюсь, кто-то может извлечь уроки из моей борьбы!