Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 组件在redux存储更改时未重新提交_Javascript_Reactjs_Redux - Fatal编程技术网

Javascript 组件在redux存储更改时未重新提交

Javascript 组件在redux存储更改时未重新提交,javascript,reactjs,redux,Javascript,Reactjs,Redux,我真的很挣扎,但我不能让我的组件重新上市,即使我可以看到商店正在改变,是的,我不确定我没有改变我的原始状态 减速器: const AssessmentReducer = (state = initialState, action) => { switch (action.type) { case GET_ASSESSMENT_INFO: return { ...state, assessment: action.payload } default:

我真的很挣扎,但我不能让我的组件重新上市,即使我可以看到商店正在改变,是的,我不确定我没有改变我的原始状态

减速器:

const AssessmentReducer = (state = initialState, action) => {
  switch (action.type) {
    case GET_ASSESSMENT_INFO:
      return { ...state, assessment: action.payload }
    default:
      return state
  }
} 

行动:

import { GET_ASSESSMENT_INFO } from '../reducers/AssessmentReducer'
import API from '../../api'

export function getAssessment(assessment) {
  return {
    type: GET_ASSESSMENT_INFO,
    payload: assessment,
  }
}

export function getAssesmentInfo(id) {
  return function (dispatch) {
    return API.get_all('assessments/' + id).then(
      (response) => dispatch(getAssessment(response)),
      (error) => console.log('An error occurred', error)
    )
  }
}

组成部分:

 componentDidMount() {
    const assessmentId = this.props.match.params.assessment_id
    this.props.getAssesmentInfo(assessmentId)
}
/** A whole bunch of stuff in here ***/
render() {
    console.log(this.props.assessment)
}

function mapStateToProps(state) {
  return {
    //screenQuestions: state.ScreenQuestionsReducer.screenQuestions,
    assessment: state.AssessmentReducer.assessment,
  }
}

export default connect(mapStateToProps, { getAssesmentInfo })(
  withStyles(styles)(AssessmentTabs)
)

我看到我的初始状态被记录在渲染中,我可以验证是否调用了该操作并将其发送给具有正确负载的减速器。但是渲染中的控制台日志不会再次命中。使用redux开发工具,状态也得到了正确更新

有什么想法吗

编辑:


只要在我的组件中单击一个按钮并更新状态,它就会在redux的新道具中读取“没问题”

您的组件中有shoulldComponentUpdate()吗?不,我不需要,我认为我不需要它,默认为true,应该允许无论如何更新。从不调用ComponentDidUpdateeither@Kierchon您的redux是否使用react-thunk或react-saga来处理异步操作?@VoQuocThang是的,它的用法是thunks@Kierchon问题中的代码看起来不错,但显然不是全部,因此如果没有随机猜测,就不可能回答问题。我的建议是签出repo中的一个测试分支,并用最小的组件替换该组件(挂载时分派并显示redux状态)。然后添加一些东西,比如用样式等等,看看它什么时候会断裂。