Javascript 为什么我的动作创建者不在下一个js中将数据发送到redux商店?
我刚开始第一次使用NextJS,我正在尝试将它与Redux一起使用。 我已经能够在index.js中设置redux和getServerSideProps函数。 然而,问题是,即使在我获取数据之后,存储仍然返回空状态。当我将从getServerSideProps函数中获取的数据记录到console.log中时,我在终端中看到了它,因此我怀疑问题在于我的操作创建者没有将数据发送到存储区。我甚至尝试使用redux thunk从action creator内部处理数据获取和发送,但这也不起作用。拜托,我真的需要一些帮助 我的行动创造者:Javascript 为什么我的动作创建者不在下一个js中将数据发送到redux商店?,javascript,reactjs,redux,next.js,Javascript,Reactjs,Redux,Next.js,我刚开始第一次使用NextJS,我正在尝试将它与Redux一起使用。 我已经能够在index.js中设置redux和getServerSideProps函数。 然而,问题是,即使在我获取数据之后,存储仍然返回空状态。当我将从getServerSideProps函数中获取的数据记录到console.log中时,我在终端中看到了它,因此我怀疑问题在于我的操作创建者没有将数据发送到存储区。我甚至尝试使用redux thunk从action creator内部处理数据获取和发送,但这也不起作用。拜托,我
export const initializeArticles = (articles) => {
return {
type: 'INITARTICLES',
data: articles
}
}
我的减速机:
const articlesReducer = (state = initialState, action) => {
switch (action.type) {
case 'INITARTICLES':
return action.data
case 'ADDARTICLE':
return state.concat(action.data)
case 'INCREMENTARTICLELIKES':
return state.map((article) => {
if(article.id === action.id) {
return {
...article,
likes: article.likes + 1
}
} else {
return article
}
})
case 'DELETEARTICLE':
return state.filter(article => article.id !== action.id)
case 'ADDCOMMENT':
return state.map((article) => {
if (article.id === action.id) {
return {
...article,
comments: article.comments.concat(action.data)
}
} else {
return article
}
})
case 'APPROVECOMMENT':
return state.map((article) => {
if (article.id === action.articleId) {
return article.commentIsApproved = true
} else {
return article.commentIsApproved = false
}
})
default:
return state
}
}
export default articlesReducer
我的店铺设置:
let store;
const initstore = (initialState) => {
return createStore(
rootReducer,
initialState,
composeWithDevTools(applyMiddleware(thunk))
)
}
export const initializeStore = (preloadedState) => {
let _store = store ?? initstore(preloadedState)
if (preloadedState && store) {
_store = initstore({
...store.getState(),
...preloadedState
})
store = undefined
}
if(typeof window === 'undefined') return _store
if(!store) store = _store
return _store
}
export function useStore(initialState) {
const store = useMemo(() => initializeStore(initialState), [initialState])
return store
}
My getServerSideProps函数:
export const getServerSideProps = () => {
const reduxStore = initializeStore()
const { dispatch } = reduxStore
getPosts().then((posts) => {
console.log(posts)
dispatch(initializeArticles(posts))
})
return { props: { initialReduxState: reduxStore.getState() } }
}
export default Home
您正在调用您的创建者,但没有参数。实际上我是用参数调用它的,只是在发布时忘记将其添加到代码中,我只是在尝试redux-thunk时暂时删除了该参数。您绝对不应该在那里调用此
const reduxStore=initializeStore()
。我建议使用google react redux示例应用程序。我在这里找到了代码示例:根据每次调用getserversideProps时商店初始化的名称判断。这是一种误导。我会找到不同的例子。