Redux 初始状态值变为未定义

Redux initial state values becomes undefined

以下是我的初始默认状态值,

export const parameterInitialState = {
    id: '',
    name: '',
    parameterSettings: parameterSettingsInitialState,
    parameterMediaSettings: parameterMediaSettingsInitialState,
};

export const parameterSettingsInitialState = {
    attributeId: '',
    value: '',
};

export const parameterMediaSettingsInitialState = {
    barcodeSupported: false,
    mediaTypeId: '',
    qrcodeSupported: false,
    scratchOffPINSupported: false,
};

在parameterState reducer中,我用的是上面的parameterInitialState

const initialState = {
    parameterSettings: parameterInitialState,
};

export default function parameterState( state = initialState, action ) {
    switch ( action.type ) {
        case FETCH_PARAMETER_SUCCESS:{
            return { ...state,  ...action.payload };
        }

        default:
            return state;
    }
}

但我的问题是在初始状态下对象 parameterSettings 和 parameterMediaSettings 变得未定义

更改初始状态变量的定义顺序,在给定的顺序中变量 parameterSettingsInitialStateparameterMediaSettingsInitialState 将 return 未定义。

因此,请确保先定义子对象变量,然后再定义您计划包含它们的父对象。

    export const parameterSettingsInitialState = {
        attributeId: '',
        value: '',
    };

    export const parameterMediaSettingsInitialState = {
        barcodeSupported: false,
        mediaTypeId: '',
        qrcodeSupported: false,
        scratchOffPINSupported: false,
    };

    export const parameterInitialState = {
        id: '',
        name: '',
        parameterSettings: parameterSettingsInitialState,
        parameterMediaSettings: parameterMediaSettingsInitialState,
    };

更新了答案 parameterSettingsInitialStateparameterMediaSettingsInitialState 作为数组:

    export const parameterSettingsInitialState = [{
        attributeId: '',
        value: '',
    }];

    export const parameterMediaSettingsInitialState = [{
        barcodeSupported: false,
        mediaTypeId: '',
        qrcodeSupported: false,
        scratchOffPINSupported: false,
    }];

    export const parameterInitialState = {
        id: '',
        name: '',
        parameterSettings: parameterSettingsInitialState,
        parameterMediaSettings: parameterMediaSettingsInitialState,
    };