【发布时间】:2021-11-18 09:11:32
【问题描述】:
我一直无法让我的 nextjs 应用程序与 getServerSideProps() 一起工作以进行服务器端重连。我尝试实现 next-redux-wrapper 但状态为空。
*注意:redux 在客户端运行时工作正常,但现在我试图获取getServerSideProps() 中的状态并将其传递给组件,以便在服务器上呈现。
store.js:
const reducer = combineReducers({
productList: productListReducer,
categoryList: categoryListReducer,
})
const middleware = [thunk]
const makeStore = context => createStore(reducer, composeWithDevTools(applyMiddleware(...middleware)))
const wrapper = createWrapper(makeStore, {debug: true})
export default wrapper
reducer.js:
export const productListReducer = (state = { products: [] }, action) => {
switch (action.type) {
case HYDRATE:
return {...state, ...action.payload}
case 'PRODUCT_LIST_REQUEST':
return { loading: true, products: [] }
case 'PRODUCT_LIST_SUCCESS':
return { loading: false, products: action.payload }
case 'PRODUCT_LIST_FAIL':
return { loading: false, error: action.payload }
default:
return state
}
}
_app.js:
import wrapper from '../redux/store'
function MyApp({ Component, pageProps }) {
return (
<Component {...pageProps} />
)
}
export default wrapper.withRedux(MyApp)
index.js:
import wrapper from '../redux/store'
export const getServerSideProps = wrapper.getServerSideProps(store => ({req, res}) => {
const state = store.getState()
const { products } = state.productList
return {props: {products: products}}
})
export default function Home({products}) {
return (
<>
<div>{products}</div>
</>
)
}
【问题讨论】:
-
我也有同样的问题。关于这个问题的任何更新?
-
@Afsanefda 我使用 getInitialProps 和 next-redux-wrapper 让它工作
-
感谢您的回复。如果可以的话可以上传代码吗?
-
有什么消息吗??我仍然面临这个问题。
-
@Afsanefda 嗨,我发布了对我有用的答案。
标签: javascript redux next.js server-side-rendering next-redux-wrapper