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