Reactjs 操作正在更新状态,但MapStateTrops中的道具在组件中显示为未定义

Reactjs 操作正在更新状态,但MapStateTrops中的道具在组件中显示为未定义,reactjs,redux,react-redux,Reactjs,Redux,React Redux,我正在编写一个简单的多项选择评估应用程序,让你点击一个答案,然后突出显示并添加到答案数组中。如果用户已经单击了其他选项,则会从answers数组中删除这些选项。动作被正确调度,但我在组件中使用的道具显示为未定义。我相信我已经把这件事复杂化了(我是一个初学者),所以非常感谢您的帮助。我看过其他7篇SO文章,但设置不同,它们在mapStateToProps和mapDispatchToProps中不包含多个项目(不确定这是否有区别) 问题.js const INITIAL_STATE= { ans

我正在编写一个简单的多项选择评估应用程序,让你点击一个答案,然后突出显示并添加到答案数组中。如果用户已经单击了其他选项,则会从answers数组中删除这些选项。动作被正确调度,但我在组件中使用的道具显示为未定义。我相信我已经把这件事复杂化了(我是一个初学者),所以非常感谢您的帮助。我看过其他7篇SO文章,但设置不同,它们在mapStateToProps和mapDispatchToProps中不包含多个项目(不确定这是否有区别)

问题.js

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:""
};
reducer中的“changeI”是我的utils.js文件夹中的一个util函数,它为正确的div提供一个“checked”类名,如果没有包含,则将其添加到answers数组中,同时从answers数组中取出其他多项选择选项。这一切都很好。是mapStateToProps的道具让我抓狂

有问题的组成部分

import React from 'react';
import './multiple-choice.styles.scss';
import {connect} from 'react-redux';
import {i_Clicked,j_Clicked,k_Clicked,l_Clicked} from '../../redux/question/question.actions';

const MultipleChoice= ({i_Checked,j_Checked, k_Checked, l_Checked, i_Clicked,j_Clicked,k_Clicked,l_Clicked,i,j,k,l})=>{

    let answerUrl="../../../public/images/answer";
  let formVisible="none";
  let mcVisible="";


  return(

  <div  style={{display: mcVisible}}>
        <div className='row'>
        //answer choice 1
        <div onClick={i_Clicked} className={`${i_Checked} column`} >
          <img alt="Possible Answer" src={`${answerUrl}${i}.png`}/>
         </div>

//answer choice 2
        <div onClick={j_Clicked} className={`${j_Checked} column`}>
          <img alt="Possible Answer" src={`${answerUrl}${j}.png`}/>
         </div>
        </div>

    <div className="row">
    //answer choice 3
    <div onClick={k_Clicked} className={`${k_Checked} column`}>
      <img alt="Possible Answer" src={`${answerUrl}${k}.png`}/>
    </div>

//asnwer choice 4
    <div  onClick={l_Clicked} className={`${l_Checked} column`}>
      <img alt="Possible Answer" src={`${answerUrl}${l}.png`}/>
    </div>
    </div>
</div>

  )
}
const mapDispatchToProps=dispatch=>({
    i_Clicked: ()=> dispatch(i_Clicked()),
    j_Clicked: ()=> dispatch(j_Clicked()),
    k_Clicked: ()=> dispatch(k_Clicked()),
    l_Clicked: ()=> dispatch(l_Clicked())

});

const mapStateToProps=state=>({

    i_Checked: state.i_Checked,
    j_Checked:state.j_Checked,
    k_Checked:state.k_Checked,
    l_Checked:state.l_Checked,
    i:state.i,
    j:state.j,
    k:state.k,
    l:state.l
});

export default connect(mapStateToProps,mapDispatchToProps)(MultipleChoice);
从“React”导入React;
导入“./multiple-choice.styles.scss”;
从'react redux'导入{connect};
从“../../redux/question/question.actions”导入{i_Clicked,j_Clicked,k_Clicked,l_Clicked};
const MultipleChoice=({i_Checked,j_Checked,k_Checked,l_Checked,i_Clicked,j_Clicked,k_Clicked,l_Clicked,i,j,k,l})=>{
让answerUrl=“../../../public/images/answer”;
让formVisible=“无”;
让mcVisible=“”;
返回(
//答案选择1
//答案选择2
//答案选择3
//阿斯纳选择4
)
}
const mapDispatchToProps=调度=>({
i_Clicked:()=>调度(i_Clicked()),
j_Clicked:()=>调度(j_Clicked()),
k_Clicked:()=>调度(k_Clicked()),
l_单击:()=>调度(l_单击())
});
常量mapStateToProps=状态=>({
我查过了:州。我查过了,
j_Checked:state.j_Checked,
k_Checked:state.k_Checked,
l_Checked:state.l_Checked,
i:州,我,
j:state.j,
k:州,k,
l:州
});
导出默认连接(mapStateToProps、mapDispatchToProps)(MultipleChice);

当我点击问题的第一个答案选项(用字母“I”表示I,j,k,l)时,它会显示在答案数组中,I_checked的值为“checked”,因此操作似乎有效,只是道具没有加载到组件中?

你能发布你的根还原器文件吗?。使用组合减速机的位置

export default combineReducers({
  question: QuestionReducer,
});
如果这是您实现
MapStateTops的方式,则应按以下方式更改

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存储和
问题
填写与问题部分相关的参考数据