操作正在更新状态,但mapStateToProps中的道具在Component中显示为未定义

时间:2020-04-17 03:12:11

标签: reactjs redux react-redux

我正在编写一个简单的多项选择评估应用程序,可让您单击答案,然后将其突出显示并添加到答案数组中。如果用户已经单击其他选项,则将从答案数组中删除其他选项。该动作已正确调度,但我在组件中使用的道具显示为未定义。我确定我已经使这个问题复杂化了(我是一个初学者),所以我们将不胜感激。我看过大约7个其他的SO帖子,但是设置不同,并且它们在mapStateToProps和mapDispatchToProps中不包含多个项目(不确定是否会有所不同。)

question.reducer.js

Imgproc.dilate(dist, dist, Mat.ones(3, 3, CvType.CV_8U));
reducer中的

“ changeI”是我的utils.js文件夹中的util函数,为适当的div提供className为“ checked”并将其添加到Answers数组(如果不包括在内),同时取出其他多项选择答案数组。一切正常。是mapStateToProps的道具让我发疯了!

有问题的组件

const INITIAL_STATE=
{
  answers:[],
  i:1,
  j:2,
  k:3,
  l:4,
  i_Checked:"",
  j_Checked:"",
  k_Checked:"",
  l_Checked:""
};
const questionReducer=(state=INITIAL_STATE,action)=>{
  switch(action.type){
case QuestionActionTypes.CLICK_I:
return{
  ...state,
  answers: changeI(state.i,state.j,state.k,state.l,state.answers),
  i_Checked:"checked",
  j_Checked:"",
  k_Checked:"",
  l_Checked:""
};

当我单击问题的第一个答案选择时(以字母“ i”表示i,j,k,l),它显示在答案数组中,并且i_checked的值为“ checked”,因此该操作似乎可行,只是道具没有加载到组件中?

1 个答案:

答案 0 :(得分:1)

您可以发布根reducer文件吗?您使用combineReducers

的地方
export default combineReducers({
  question: QuestionReducer,
});

如果这是您实施的方式,则应mapStateToProps进行以下更改

const mapStateToProps=state=>({
    i_Checked: state.question.i_Checked,
    j_Checked:state.question.j_Checked,
    k_Checked:state.question.k_Checked,
    l_Checked:state.question.l_Checked,
    i:state.question.i,
    j:state.question.j,
    k:state.question.k,
    l:state.question.l
});

状态将由整个redux存储和与问题部分相关的question填充参考数据组成

相关问题