我的redux状态已更改,但视图不';T
我正在制作一个名为“你愿意”的游戏, 该游戏允许用户从用户名中选择假登录名 我的比赛一切顺利 但当用户回答问题时,状态会改变,但视图不会重新渲染 我想这是因为变异,但我找不到我的错误,所以这是我的代码 问题.js我的redux状态已更改,但视图不';T,redux,react-redux,Redux,React Redux,我正在制作一个名为“你愿意”的游戏, 该游戏允许用户从用户名中选择假登录名 我的比赛一切顺利 但当用户回答问题时,状态会改变,但视图不会重新渲染 我想这是因为变异,但我找不到我的错误,所以这是我的代码 问题.js case ADD_ANSWER: const {qid,answer,authedUser} = action.payload return { ...state,
case ADD_ANSWER:
const {qid,answer,authedUser} = action.payload
return {
...state,
[qid]:{
...state[qid],
[answer]:{
...state[qid][answer],
votes:[...state[qid][answer].votes, authedUser]
}
}
}
case ADD_USER_ANSWER:
const {qid,authedUser,answer} = action.payload
return{
...state,
[authedUser]:{
...state[authedUser],
answers:{
...state[authedUser].answers,
[qid]:answer
},
},
}
users.js reducer
case ADD_ANSWER:
const {qid,answer,authedUser} = action.payload
return {
...state,
[qid]:{
...state[qid],
[answer]:{
...state[qid][answer],
votes:[...state[qid][answer].votes, authedUser]
}
}
}
case ADD_USER_ANSWER:
const {qid,authedUser,answer} = action.payload
return{
...state,
[authedUser]:{
...state[authedUser],
answers:{
...state[authedUser].answers,
[qid]:answer
},
},
}
我使用redux thunk在一个函数中调用这两个操作
shared.js
export const handleAddAnswer = ({authedUser,qid,answer})=>{
return (dispatch)=>{
_saveQuestionAnswer ({ authedUser, qid, answer }).then(()=>{
dispatch(addAnswer({authedUser,qid,answer}))
dispatch(addUserAnswer({authedUser,qid,answer}))
})
}
}
最后,我使用MapStateTops在我的组件中使用它
Home.js组件
function mapStateToProps({questions,authedUser,users}){
return {
questions,
unanswered:Object.values(questions).filter((question)=>{
if(!Object.keys(authedUser.answers).includes(question.id)){
return question
}
}).sort((a,b)=>b.timestamp - a.timestamp),
answered:Object.values(questions).filter((question)=>{
if(Object.keys(authedUser.answers).includes(question.id)){
return question
}
}).sort((a,b)=>b.timestamp - a.timestamp),
users,
authedUser,
}
}
export default connect(mapStateToProps)(Home)
这里没有发生突变。你的组件是如何订阅的?我编辑了这个问题以添加更多信息。我被困在这个问题上有2天了,所以有人能帮忙吗?因为你的选择器在每次执行时都会返回新对象,所以该组件应该在每次发送时完全重新加载,无论该操作是否更改了存储。你能看到devtools中的状态变化吗?