为什么在使用 redux 时操作中的参数返回为未定义?
Why is the parameter inside the action coming back as undefined when using redux?
目前,我有一个呈现日期列表的页面,当用户按下某个日期时,用户将被带到一个新页面,该页面呈现他们按下的日期的图表。
我想使用 redux 来更新道具,这样我就可以根据用户按下的按钮来渲染特定的图形。
在我的 renderList() 中,我 return 一个映射数组,它又 return 是一堆 TouchableOpacities。在每个 TouchableOpacity 内部,在 onPress 事件内部,调用另一个函数,该函数将有关测试的所有信息作为参数传递。渲染列表看起来像这样。
let sorted = _.orderBy(this.props.testResults, testResult => testResult.created, 'desc');
moment.locale(localeToMomentLocale(I18n.locale));
return sorted.map((result, index) => {
let formattedDate = moment(result.created).format(I18n.t('report_header_dformat'));
let correctedDate = vsprintf(I18n.t('report_date_correction'), [formattedDate]);
let analysis = TestAnalysis.run(result);
return (
<TouchableOpacity
onPress={() => this.resultOrTest(result)}
style={styles.row} key={'_' + index}>
</TouchableOpacity>
resultOrTest 看起来像这样:
resultOrTest = (result) => {
console.log('ReportDetailPage: resultOrTest: showing result: ', result.id);
this.props.setResultIdToProps(result.id);
this.props.navigation.navigate('ReportSinglePage');
};
mapDispatchToProps 看起来像这样:
const mapDispatchToProps = (dispatch) => {
return {
setResultIdToProps: () => {
dispatch(setResultIdToProps());
}
}
}
export default connect(mapStateToProps, mapDispatchToProps)(ReportDetailPage);
在我的 actions/user.js 页面中。
export const setResultIdToProps = (resultId) => {
// var newId = resultId.toString();
console.log('actions/user.js setResultIdToProps: resultid.......', resultId);
return (dispatch, getState) => {
dispatch({
type: SET_RESULT_ID_TO_PROPS,
resultId
});
}
};
为什么 resultId 一直返回未定义?我是不是传错了value/Parameter?
您需要在 mapDispatchToProps
中正确地将参数传递给您的操作调度程序。现在,您没有传递 resultId
,因此它传递为 undefined
。
const mapDispatchToProps = (dispatch) => {
return {
setResultIdToProps: (resultId) => {
dispatch(setResultIdToProps(resultId));
}
}
}
目前,我有一个呈现日期列表的页面,当用户按下某个日期时,用户将被带到一个新页面,该页面呈现他们按下的日期的图表。
我想使用 redux 来更新道具,这样我就可以根据用户按下的按钮来渲染特定的图形。
在我的 renderList() 中,我 return 一个映射数组,它又 return 是一堆 TouchableOpacities。在每个 TouchableOpacity 内部,在 onPress 事件内部,调用另一个函数,该函数将有关测试的所有信息作为参数传递。渲染列表看起来像这样。
let sorted = _.orderBy(this.props.testResults, testResult => testResult.created, 'desc');
moment.locale(localeToMomentLocale(I18n.locale));
return sorted.map((result, index) => {
let formattedDate = moment(result.created).format(I18n.t('report_header_dformat'));
let correctedDate = vsprintf(I18n.t('report_date_correction'), [formattedDate]);
let analysis = TestAnalysis.run(result);
return (
<TouchableOpacity
onPress={() => this.resultOrTest(result)}
style={styles.row} key={'_' + index}>
</TouchableOpacity>
resultOrTest 看起来像这样:
resultOrTest = (result) => {
console.log('ReportDetailPage: resultOrTest: showing result: ', result.id);
this.props.setResultIdToProps(result.id);
this.props.navigation.navigate('ReportSinglePage');
};
mapDispatchToProps 看起来像这样:
const mapDispatchToProps = (dispatch) => {
return {
setResultIdToProps: () => {
dispatch(setResultIdToProps());
}
}
}
export default connect(mapStateToProps, mapDispatchToProps)(ReportDetailPage);
在我的 actions/user.js 页面中。
export const setResultIdToProps = (resultId) => {
// var newId = resultId.toString();
console.log('actions/user.js setResultIdToProps: resultid.......', resultId);
return (dispatch, getState) => {
dispatch({
type: SET_RESULT_ID_TO_PROPS,
resultId
});
}
};
为什么 resultId 一直返回未定义?我是不是传错了value/Parameter?
您需要在 mapDispatchToProps
中正确地将参数传递给您的操作调度程序。现在,您没有传递 resultId
,因此它传递为 undefined
。
const mapDispatchToProps = (dispatch) => {
return {
setResultIdToProps: (resultId) => {
dispatch(setResultIdToProps(resultId));
}
}
}