- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个同构的 React 应用程序,并且当用户发送请求时执行以下任务:
1) 假设用户点击 /about-us
,react-routers matchPath
找到合适的组件并返回它。
2) 调用名为 fetchData 的静态函数,该函数分派(dispatch)操作 aboutPageContent()
。3) 一旦在服务器上解决了 Promise,就会调用 getState 来获取更新的状态,但它返回 aboutPage 的初始状态,而不是新更新的状态。
Reducer gets a response but does not return a new state. (this happens only when action is dispatched by server).
服务器上的 getState 返回:
{
aboutUs:{
founders:[{}]
story: ""
}
}
但它应该返回:
{
aboutUs:{
founders:[{name: 'abc'}]
story: "some random story"
}
}
<小时/>
服务器.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.jsx
static fetchData = (store) => [store.dispatch(aboutPageContent())]
<小时/>
preloadedState 被分配给 window.__data
。并且在 client.js 上调用 window.__data
以加载客户端存储。
我做错了什么吗?这是我的第一个 react 同构应用程序。
最佳答案
我认为您需要订阅此处的商店才能获取如下更新。使用 store.subscribe 将确保您获得内部更新的状态。希望能帮助到你。阅读 http://redux.js.org/docs/api/Store.html#subscribelistener
store.subscribe(() => {
// When state will be updated(in this case, when items will be fetched), this is how we can get updated state.
let items= store.getState().items;
})
关于javascript - Redux getState 返回服务器上的初始状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46261148/
我很好奇如何从服务器管理初始状态。例如,我们在页面上有一个按钮,只有在用户获得授权后才能启用该按钮。我看到两个选项,但都有缺点: 在 ComponentWillMount() 中,从服务器获取信息。缺
我有一个听另一个集团的集团。更新后flutter_bloc打包至 version 6.0.2 ,监听器在初始状态下不会再调用。 class BlocA extends Bloc { final B
我正在为我的 React 应用程序使用 redux。我正在从 api 获取用户数据,用它更新 redux 状态并将其显示到我的组件中。数据是对象列表。导致我出现问题的是设置 redux 初始状态。 r
我想观察一个由完全独立的代码修改的 ObservableList。我的问题是,我不仅希望在列表更改时调用 ListChangeListener(当我附加监听器时,列表可能已经包含元素),而且我还希望将
正如标题所说,我需要将 TextView、ImageView 和其他 View 重置为初始状态。例如,在触摸该特定 View 后,会播放一个动画,并且它的动画会(视觉上)销毁该 View 。 现在我需
我已经开始开发一个 react native 应用程序,但我的 ListView 的初始化出现问题。 我正在使用react-native-db-models插件来存储和检索我的数据 问题是我想在rea
我正在对时间序列数据使用 lstm。我有关于时间序列的不依赖于时间的特征。想象一下该系列的公司股票以及非时间系列功能中的公司位置之类的东西。这不是用例,但它是相同的想法。对于此示例,我们只预测时间序列
我有一个参与者模型,带有 state_machine last_action。我想根据角色属性设置last_action 的初始值。如果角色为“导师”,则初始值为“值1”,而如果角色为“学生”,则初始
我已经为 LavaLamp 滑动菜单集成了代码,到目前为止效果很好(我遇到了一些问题,但能够通过阅读面板快速解决它们)但是有一件令人沮丧的事情妨碍了我。当您最初加载页面时,菜单悬停背景位于错误的位置,
我想根据从 Home.js 获得的现有 Prop 在 reducer.js 中设置初始状态 我试图调用 home: this.props.homedata 来设置初始状态,但它不起作用。 import
在我的程序中,我有多个网格,但它们非常相似,因此我决定为所有网格制作一个 reducer ,以保持我的代码美观且干燥。当我分派(dispatch)事件以更改存储时,我将网格名称作为参数与有效负载一起发
我是 React 的新手,正在尝试构建一个具有购物车功能的应用程序,用户可以在其中将机器人添加到购物车。我正在使用 Context API 在整个应用程序中提供购物车,并使用 useReducer 为
我是 React 的新手,正在尝试构建一个具有购物车功能的应用程序,用户可以在其中将机器人添加到购物车。我正在使用 Context API 在整个应用程序中提供购物车,并使用 useReducer 为
我有一个功能: test :: String -> State String String test x = get >>= \test -> let test' = x ++ tes
我是 Redux 和 React 的新手,我正在尝试编写一些基本代码。我遇到了一个看起来很愚蠢但无法解决的问题。 这是片段 import React from 'react'; import Reac
我是 JS/React-native 新手,对于如何正确管理 map 初始状态有点困惑。 我有以下组件: import React from 'react'; import { StyleSheet,
嗨,我最近开始使用 Angular 和 Node,但立即遇到了问题。 我有一个简单的 Controller ,用于获取单个对象。一切正常,但我希望能够在 Controller 内初始化范围变量。我不知
我正在使用tf.nn.dynamic_rnn在 tensorflow 中运行 LSTM。我有一个由 N 个初始状态向量组成的张量和一个由 M = N * n 个输入组成的张量。每个系列由n个输入项组成
在 Angular 1.5 应用程序中使用 UIRouter,我在尝试为我的 Angular 模块设置初始状态时遇到问题。 我已经创建了几个没有 URL 的状态(因为我不需要实际路由),我想在模块实例
我是一名优秀的程序员,十分优秀!