gpt4 book ai didi

javascript - 为什么我的 Fluxible 商店不会脱水?

转载 作者:行者123 更新时间:2023-11-29 21:38:45 25 4
gpt4 key购买 nike

我有一个非常简单的 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 获取数据的操作分派(dispatch),存储监听该事件并从负载中提取数据。据我所知,所有这一切都在起作用,因为在客户端中运行时一切都运行完美。

我遇到的问题是,当服务器调用 app.dehydrate() 时,NoteStore 似乎没有脱水。我查看了嵌入到页面中的 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;

最佳答案

好的,我知道出了什么问题。基本上,应该调度 NEW_NOTES_FETCHED 事件的操作没有返回 promise ,因此处理来自后端服务器的响应的逻辑从未真正运行过,即使请求本身已经发出并且我看到它出现在后端的日志中。

我纠结了这么久,都快要抓狂了,所以希望有人能从我的挣扎中吸取教训!

关于javascript - 为什么我的 Fluxible 商店不会脱水?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33924394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com