显示来自同一个 reducer 的 2 个不同状态而没有状态重写自己

莱拉兹

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

哈泽姆迪

我没有清楚地了解您的问题,我认为最好发布您的代码。

但是如果我猜对了,我认为您正在使用相同的对象来存储它们。你的代码应该是这样的。

在 reducer.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 }));
    };
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Redux合并来自不同reducer的2个状态

PHP - 组合来自同一个二维数组的 2 个元素

将来自2个不同查询的2个变量传递到同一个foreach循环中

想要从 reactjs 中的同一个 reducer 返回不同的值

从另一个reducer内部访问reducer状态

如何在搜索中显示同一个表格中的 2 个表格

同一个表的 2 个分区在 PostgrSQL 中可以有不同的索引吗?

Yii2 - 在同一个 activeform 上使用同一个类的多个模型

Laravel+VUE:如何在同一个刀片中显示 2 个不同的 div 和 2 个不同的按钮

来自同一个Go程序的不同输出

如何在 App.js 中显示来自同一个文件的多个组件?

基于来自同一个表 Laravel Vuejs 的父 id 的类别显示名称

具有来自不同模型的数据但显示在同一个视图上的两个部分视图

更新状态由另一个reducer管理

反应:在Reducer中更新我的状态的一个值

Redux在另一个reducer中的更新状态

如何在一个状态内合并多个reducer?

如何对同一个查询 SQL 进行 2 个不同的计数?

将2个不同的路径指向同一个Apache域名

从同一个包更新和插入 2 个不同的表

同一个表上的 2 个不同查询,计数和分组依据

将 2 个不同的容器连接到同一个 mongoDB 容器

如何从同一个表中获取2个不同的数据列

来自同一个包的多个导入

来自同一个依赖的依赖收敛

来自同一个表的多个内部联接

来自同一个表的内部连接

来自同一个txt文件的多个值

来自同一个表的子查询