Reactjs 显示来自同一减速器的两种不同状态,而不重写状态本身

Reactjs 显示来自同一减速器的两种不同状态,而不重写状态本身,reactjs,redux,react-redux,Reactjs,Redux,React Redux,我正在构建一个大型应用程序,从同一个reducer中获取不同的音乐音频和视频,我想从reducer中获取最新的5个音乐音频和视频,但它们都在同一个reducer中,在我使用操作时,如何在不重写两个数据的情况下获取这两个数据?我不清楚您的问题,我认为最好发布您的代码 但是如果我没弄错的话,我想你是在用同一个对象来存储它们。 你的代码应该是这样的 at.js const INITIAL_STATE = { musicList: [], videoList: [] }; export

我正在构建一个大型应用程序,从同一个reducer中获取不同的音乐音频和视频,我想从reducer中获取最新的5个音乐音频和视频,但它们都在同一个reducer中,在我使用操作时,如何在不重写两个数据的情况下获取这两个数据?

我不清楚您的问题,我认为最好发布您的代码

但是如果我没弄错的话,我想你是在用同一个对象来存储它们。 你的代码应该是这样的

at.js

const INITIAL_STATE = {
    musicList: [],
    videoList: []
};

export function reducerX(state = INITIAL_STATE, action) {
    switch (action.type) {
        case 'FETCHING_MUSIC_SUCCESS':
            return {
                ...state, musicList: action.payload, loading: false
            };
        case 'FETCHING_MUSIC_LOADING':
            return { ...state, loading: true };

        case 'FETCHING_MUSIC_FAILED':
            return {
                ...state,
                error: 'failed to fetch music',
                loading: false
            };

        case 'FETCHING_VIDEO_SUCCESS':
            return {
                ...state, videoList: action.payload, loading: false
            };
        case 'FETCHING_VIDEO_LOADING':
            return { ...state, loading: true };

        case 'FETCHING_VIDEO_FAILED':
            return {
                ...state,
                error: 'failed to fetch video',
                loading: false
            };
    }
}

在actionX.js上

export function fetchMusic() {
    return dispatch => {
        dispatch({
            type: 'FETCHING_MUSIC_LOADING'
        });
        return API.get('/app/rest/music')
            .then(({ data: music }) =>
                dispatch({
                    type: 'FETCHING_MUSIC_SUCCESS',
                    payload: music
                })
            )
            .catch(error => dispatch({ type: 'FETCHING_MUSIC_FAILED', payload: error }));
    };
}

export function fetchVideo() {
    return dispatch => {
        dispatch({
            type: 'FETCHING_VIDEO_LOADING'
        });
        return API.get('/app/rest/video')
            .then(({ data: video }) =>
                dispatch({
                    type: 'FETCHING_VIDEO_SUCCESS',
                    payload: video
                })
            )
            .catch(error => dispatch({ type: 'FETCHING_VIDEO_FAILED', payload: error }));
    };
}

你能包括你的减量器和动作吗?一般来说,这是redux的一大优点:它确保你的应用程序的行为是一致的。试着描述一个你期望出现问题的场景,这将有助于了解你的应用程序将如何运行。顺便说一句,如果它是一个单一的减速器,那么它就是一个单一的状态对象,而不是多个状态对象。嘿@Hazemdido!非常感谢,我很感激!你的回答实际上使我走上了正确的轨道