Javascript 在减速器中使用Date.now()替换

Javascript 在减速器中使用Date.now()替换,javascript,reactjs,redux,Javascript,Reactjs,Redux,文件说我应该通过在减缩器中使用新的日期等来避免状态突变。请帮我建议一下该怎么做 行动: const RECEIVE_PRICES = 'RECEIVE_PRICES'; function receivePrices(prices) { return { type: RECEIVE_PRICES, receivedAt: Date.now(), prices, }; } 减速器: ... case RECEIVE_PRICES: { let {

文件说我应该通过在减缩器中使用新的日期等来避免状态突变。请帮我建议一下该怎么做

行动:

const RECEIVE_PRICES = 'RECEIVE_PRICES';

function receivePrices(prices) {
  return {
    type: RECEIVE_PRICES,
    receivedAt: Date.now(),
    prices,
  };
}
减速器:

 ...
 case RECEIVE_PRICES: {
      let { prices } = action;

      prices = prices.map((p) => {
        const baseQuote = p.symbol.split('/');
        return { ...p, baseCurrency: baseQuote[0], quoteCurrency: baseQuote[1] };
      });

      prices.sort(
        (a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime(),
      );

      return {
        ...state,
        prices,
        pricesLoading: false,
        pricesError: null,
      };
    }
    default:
      return state;
  }

在Redux中,所有副作用(不仅仅是api调用)都应该发生在动作创建者内部。您应该将此逻辑移动到action creator中,并让调用方传递必要的参数。

将所有逻辑移动到中间件中是一个好主意。在这个特定的示例中,您可以从技术上将逻辑移动到动作创建者。