我正在编写一个简单的多项选择评估应用程序,可让您单击答案,然后将其突出显示并添加到答案数组中。如果用户已经单击其他选项,则将从答案数组中删除其他选项。该动作已正确调度,但我在组件中使用的道具显示为未定义。我确定我已经使这个问题复杂化了(我是一个初学者),所以我们将不胜感激。我看过大约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”,因此该操作似乎可行,只是道具没有加载到组件中?
答案 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
填充参考数据组成