next-redux-wrapper Wrapper.getStaticProps 无法使用
Posted
技术标签:
【中文标题】next-redux-wrapper Wrapper.getStaticProps 无法使用【英文标题】:next-redux-wrapper Wrapper.getStaticProps not working with 【发布时间】:2021-11-06 00:59:44 【问题描述】:这是我的后端控制器,我正在获取房间数据
const allRooms = catchAsyncErrors(async (req, res) =>
const resPerPage = 4;
const roomsCount = await Room.countDocuments();
const apiFeatures = new APIFeatures(Room.find(), req.query)
.search()
.filter()
let rooms = await apiFeatures.query;
let filteredRoomsCount = rooms.length;
apiFeatures.pagination(resPerPage)
rooms = await apiFeatures.query;
res.status(200).json(
success: true,
roomsCount,
resPerPage,
filteredRoomsCount,
rooms
)
)
这是我正在发送有效负载和数据的 redux 操作
export const getRooms = (req, currentPage = 1, location = '', guests, category) => async (dispatch) =>
try
const origin = absoluteUrl(req);
let link = `$origin/api/rooms?page=$currentPage&location=$location`
if (guests) link = link.concat(`&guestCapacity=$guests`)
if (category) link = link.concat(`&category=$category`)
const data = await axios.get(link)
dispatch(
type: ALL_ROOMS_SUCCESS,
payload: data
)
catch (error)
dispatch(
type: ALL_ROOMS_FAIL,
payload: error.response.data.message
)
这是我的 reducer 函数,调度房间数据
export const allRoomsReducer = (state = rooms: [] , action) =>
switch (action.type)
case ALL_ROOMS_SUCCESS:
return
rooms: action.payload.rooms
case ALL_ROOMS_FAIL:
return
error: action.payload
case CLEAR_ERRORS:
return
...state,
error: null
default:
return state
在这里,我想使用 wrapper.getStaticProps 获取数据,但出现错误,但是当我使用 wrapper.getServerSideProps 时,我得到了数据。
export const getStaticProps = wrapper.getStaticProps(store=> async ( req, query, ) =>
await store.dispatch(getRooms(req, query.page, query.location, query.guests, query.category))
)
【问题讨论】:
错误是什么? 无法读取未定义的页面, 【参考方案1】:似乎在( req, query, ) =>
中,query
是undefined
。
通过documentation of next,getStaticProps
的context
对象没有query
属性。它仅适用于getServerSideProps
。
另见this info:
仅在构建时运行 由于 getStaticProps 在构建时运行,因此它不会接收仅在请求期间可用的数据,例如查询参数或 HTTP 标头,因为它会生成静态 html。
【讨论】:
以上是关于next-redux-wrapper Wrapper.getStaticProps 无法使用的主要内容,如果未能解决你的问题,请参考以下文章
将 getStaticProps 与 next-redux-wrapper 一起使用
使用 next-redux-wrapper 将 Google Analytics 添加到 Nextjs 应用程序
next-redux-wrapper 服务器不与客户端同步?
关于未找到状态且不可分配给类型的 next-redux-wrapper 的 Typescript 警告
Next.js:在 getServerSideProps 中使用带有 TypeScript 的 next-redux-wrapper 调用 Thunks?