使用Redux时,为什么操作内的参数返回未定义状态?

时间:2018-10-17 02:06:09

标签: react-native redux action

当前,我有一个呈现日期列表的页面,当用户按下某个日期时,用户将被带到一个新页面,该页面呈现了他们按下的日期的图表。

我想使用redux来更新道具,以便可以根据用户按下的按钮来渲染特定的图形。

在我的renderList()内部,我返回了一个映射数组,该数组又返回了一堆TouchableOpacities。在每个TouchableOpacity内部,在onPress事件内部,调用了另一个函数,该函数将有关测试的所有信息作为参数传递。 renderList看起来像这样。

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);

在我的action / 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继续返回未定义状态?我是否传递了错误的值/参数?

1 个答案:

答案 0 :(得分:1)

您需要正确地将参数传递给mapDispatchToProps中的操作分派器。现在,您没有传递resultId,因此它以undefined的形式传递。

const mapDispatchToProps = (dispatch) => {
    return {
        setResultIdToProps: (resultId) => {
            dispatch(setResultIdToProps(resultId));
        }
    }
}