Используйте приставку, если все данные находятся в ajax-запросах или базе данных - PullRequest
0 голосов
/ 03 января 2019

Я новичок, чтобы реагировать, особенно на нативном, и я нахожусь в дилемме, если я использую избыточность для поддержания хранилища данных, если большинство из них будет в локальной базе данных.В настоящий момент я думал о наличии «категорий» с одним случаем, который бы относился к типу 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;

Это работает, но мой вопрос, почему бы не выбрать создание методов для непосредственного вызова локальной базы данных без использования приставки?Есть ли какое-либо преимущество при использовании избыточности или это просто разделение приложения по слоям?

Тот же самый случай, если данные были на 100% в веб-сервисе, что было бы преимуществом использования избыточности, если данные всегда будутполученный из внешнего источника для редукса

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Redux удобен, если / когда вы решите, что ваше приложение выиграет от наличия глобального хранилища состояний, доступного из любого компонента, который в этом нуждается.Я склонен использовать Redux в следующих случаях:

  • Два или более компонента должны иметь доступ к некоторому общему состоянию, и без Redux сделать это будет неоправданно сложно / беспорядочно (возможно, самый важный критерий)).

  • У вас есть компоненты, которые зависят от полезной нагрузки дорогостоящего вызова REST / запроса БД / и т. Д., И имеет смысл временно сохранить эту полезную нагрузку для использования в будущем, а не выполнять дорогостоящий вызов.опять же, особенно когда вышеупомянутая точка также верна и / или ваше приложение имеет варианты использования, которые изменяют эти данные локально.

  • У вас есть полезные данные, которые требуют сложного форматирования / фильтрации / анализа после того, каквыбран для того, чтобы должным образом использоваться вашими компонентами (эй, API не всегда дают нам то, что нам нужно, именно то, что нам нужно в реальной жизни).

В вашем конкретном случае,может случиться так, что запросы к БД, которые вам нужно сделать, не особенно дороги, и вы можете позволить БД обрабатывать фильтрацию для вы.Если это ваша основная задача, Redux может оказаться немного больше, чем вам нужно.

0 голосов
/ 04 января 2019

почему бы не создать методы для непосредственного вызова локальной базы данных без использования redux?

Вы определенно можете не использовать избыточность для своего приложения; React / React Native или любая другая инфраструктура не зависит от Redux .Redux не является чем-то особенным, это всего лишь пара дюжин строк кода , чтобы организовать работу вашего приложения с состоянием.По моему честному, но предвзятому мнению, я бы использовал Redux, если думаю, что приложение может нуждаться в масштабировании более 1000+ (очень произвольное число) пользователей или иметь более 1 разработчика.

Есть ли какое-либо преимущество в использовании redux или это просто разделение приложения на слои?

Использование Redux не дает никаких преимуществ, кроме удобства сопровождения и стандартизации.Ваше приложение может показаться простым, теперь нужно только запросить локальную базу данных, вы можете использовать собственные методы для обновления магазина.Но что происходит, когда вам нужно сделать запросы API тоже?Или когда вам нужно добавить функцию отмены?Будет ли ваш код понятен новым товарищам по команде?В конечном итоге, при использовании избыточности ваши шансы на получение технического долга уменьшаются .

В том же случае, если в веб-службе данные были на 100%, то было бы преимущество использования избыточностиесли данные всегда будут получены из внешнего источника для редукса

, это не будет отличаться от запроса локальной базы данных.Redux не волнует, откуда вы берете данные, он только обрабатывает, где находится Хранилище, когда он должен измениться и как он должен измениться.

...