如果所有数据都在ajax请求或数据库中,请使用redux

时间:2019-01-03 18:36:01

标签: react-native redux react-redux redux-thunk

我是新来的反应者,特别是在本机中,如果我使用redux来维护数据存储(如果其中大多数都在本地数据库中),我将陷入困境。目前,我已经考虑过使用SET_DATA类型的单个大小写创建一个“类别”,并且每次需要过滤数据时,我都会调用异步操作方法,这些方法将加载必要的数据并执行化简器的调度。我的代码示例如下(其中ALL_CATEGORY和BY_NAME_CATEGORY是查询):

categoryAction:

import {SET_CATEGORIES} from "../constants/actionTypes";
import {ALL_CATEGORY, BY_NAME_CATEGORY} from "../constants/db/load";
import {dbTransaction} from '../database/dbbase';

export const setCategories = (data) => {
    return {
        type: SET_CATEGORIES,
        payload: data
    };
};

export const allCaregories = () => {
    return (dispatch) => {
        dbTransaction(ALL_CATEGORY)
            .then((data)=> {
                dispatch(setCategories(data));
            }).catch((error)=> console.log('ALL_CATEGORY ERROR'));
    };
};

export const byNameCaregories = () => {
    return (dispatch) => {
        dbTransaction(BY_NAME_CATEGORY)
            .then((data)=> {
                dispatch(setCategories(data));
            }).catch((error)=> console.log('BY_NAME_CATEGORY_CATEGORY ERROR'));
    };
};

de categoryReducer是:

import {SET_CATEGORIES} from "../constants/actionTypes";

const initialState = [];

const categoryReducer = (state = initialState, action) => {
    switch (action.type){
        case SET_CATEGORIES:{
            return action.payload;
        }
        default:
            return state;
    }
};

export default categoryReducer;

这可行,但是我的查询是为什么不选择创建方法来直接调用本地数据库而不使用redux?使用redux有什么好处还是只是将应用程序分层放置?

如果Web服务中的数据为100%,则同样的情况,如果总是从外部源到Redux获取数据,那么使用redux的优势是什么

2 个答案:

答案 0 :(得分:1)

  

为什么不选择创建直接调用本地数据库的方法   不使用redux?

您绝对可以选择不对应用程序使用redux; React/React Native or any other framework has no dependency on Redux。 Redux没什么特别的,实际上只是几十行code来组织应用程序处理状态的方式。以我诚实但有偏见的观点,如果我认为一个应用程序可能需要扩展到超过1000+(非常任意数量)的用户或拥有超过1 个开发人员,那么我将使用Redux。

  

使用redux是否有任何优势,还是只是将应用程序分层放置?

使用Redux除了可维护性和标准化之外没有任何优势。 您的应用程序看起来似乎很简单,现在只需要查询本地数据库,您就可以使用自定义方法来更新商店。但是,当您也需要发出api请求时会发生什么呢?还是需要添加撤消功能时?新队友会理解您的代码吗?最终,通过使用redux可以减少产生技术债务的机会

  

同一情况下,如果数据在Web服务中为100%,那将是   如果总是从   外部源到redux

与查询本地数据库没有什么不同。 Redux不在乎您从哪里获取数据,只处理存储在哪里,何时应更改以及应如何更改。

答案 1 :(得分:1)

如果/当您决定通过拥有可从任何需要它的组件访问的全局状态存储而受益时,Redux将很方便。在以下情况下,我倾向于使用Redux:

  • 两个或更多组件需要访问某个公共状态,如果没有Redux(可能是最重要的标准),要实现这一目标将是不合理的困难/混乱。

  • 您的组件取决于昂贵的REST调用/ db查询/等的有效负载,因此有必要暂时保留该有效负载以供将来使用,而不是再次执行昂贵的调用,尤其是在上述情况下也是如此,并且/或者您的应用具有在本地更改该数据的用例。

  • 您有一些有效载荷数据,在提取这些有效载荷数据后,需要对其进行详细的格式化/过滤/解析,以便组件可以正确使用它们(嘿,API并不总是向我们提供我们真正需要的东西)生活)。

在您的特定情况下,您可能需要进行的数据库查询并不是特别昂贵,您可以让数据库为您处理过滤。如果这是您主要关心的问题,那么Redux可能会超出您的需要。