上の初期状態を返します。)ReduxのgetStateをアプリに反応し、ユーザーが要求を送信する場合は、次のタスクを実行している私は同型を構築していますサーバー
1を想定ユーザーは/about-us
を打つ、反応し、ルータに適切なコンポーネントを見つけmatchPath
をし、それを返します。
2)アクションaboutPageContent()
をディスパッチするfetchDataという静的関数が呼び出されます。 3)サーバー上で約束が解決されると、更新状態を取得するためにgetStateが呼び出されますが、が返されますが、aboutPageのinitialStateが返され、新しく更新された状態ではありません。
リデューサは応答を得ますが、新しい状態を返しません。 (これは、アクションがサーバーによってディスパッチされた場合にのみ発生します)。
{ aboutUs:{ founders:[{}] story: "" } }
しかし、それは返す必要があります:
{ aboutUs:{ founders:[{name: 'abc'}] story: "some random story" } }
server.js
app.get("*", (req, res) => { const memoryHistory = createMemoryHistory(req.url) const currentRoute = routes.find(r => matchPath(req.url, r)) const store = configureStore({}, memoryHistory) if (currentRoute && currentRoute.component.fetchData) { Promise.all(currentRoute.component.fetchData(store, req.url)).then(() => { const content = ( <StaticRouter location={req.url} context={{}}> <Provider store={store}> <App /> </Provider> </StaticRouter> ) const htmlContent = renderToString(content) const preloadedState = store.getState() <----- Returns initialState and not the updated state. const html = renderToStaticMarkup(<HtmlDocument html={htmlContent} preloadedState={preloadedState} />) res.status(200) res.send(html) }) } })
aboutPageContainerをサーバーが返すの
getStateを。 JSX
static fetchData = (store) => [store.dispatch(aboutPageContent())]
preloadedStateはwindow.__data
に割り当てられます。そしてクライアントストアをロードするためにwindow.__data
がclient.jsで呼び出されます。
何か間違っていますか?それは私の最初の反応同形アプリです。