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

Use redux if all the data is in ajax requests or database

我是 React 的新手,特别是在本地,如果我使用 redux 来维护数据存储,如果其中大部分都在本地数据库中,我会陷入困境。目前,我考虑过使用 "categories" 和 SET_DATA 类型的单个案例,每次我需要过滤数据时,我都会调用加载必要数据并执行的异步操作方法减速器的调度。我的代码示例如下(其中 ALL_CATEGORY 和 BY_NAME_CATEGORY 是查询):

类别动作:

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 有什么优势还是只是将应用程序分层?

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

why not choose to create methods to directly call the local database without using redux?

你完全可以选择不为你的应用程序使用 redux; React/React Native or any other framework has no dependency on Redux. Redux isn't anything special, it's actually only a couple dozen lines of code 组织您的应用程序处理状态的方式。以我诚实但有偏见的观点,如果我认为应用程序可能需要扩展到超过 1,000 名(非常任意的数字)用户或拥有 超过 1 名开发人员,我会使用 Redux。

Is there any advantage using redux or is it just to separate the application in layers?

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

Same case if the data were 100% in a web service, what would be the advantage of using redux if the data will always be obtained from an external source to redux

这与查询本地数据库没有什么不同。 Redux 不关心你从哪里获取数据,它只处理 Store 的位置、应该更改的时间以及应该如何更改。

Redux 很方便 if/when 你决定你的应用程序将受益于拥有一个全局状态存储,任何需要它的组件都可以访问它。我倾向于在以下情况下使用 Redux:

  • 两个或多个组件需要访问一些公共状态,如果没有 Redux(可能是最重要的标准),实现这一点是不合理的difficult/messy。

  • 您的组件依赖于昂贵的 REST call/db query/etc 的有效负载,暂时保留该有效负载以供将来使用而不是执行昂贵的调用是有意义的再次强调,尤其是当上述观点也成立时 and/or 您的应用具有在本地更改该数据的用例。

  • 您的负载数据在获取后需要详细 formatting/filtering/parsing 才能被您的组件正确使用(嘿,API 并不总能准确地提供我们所需的内容现实生活中需要它)。

在您的特定情况下,您需要进行的数据库查询可能不是特别昂贵,您可以让数据库为您处理过滤。如果这是您主要关心的问题,Redux 的开销可能比您需要的要多一些。