1

API からロードされた乗り物のリストを含むストアをセットアップしました。

const loadRides = () => client.service('rides').find({
  query: {
    $sort: {
      date: -1,
    }
  }
});

const createRides = () => {
  const { subscribe, update } = writable([], async (set) => {
    try {
      const rides = await loadRides().then((result) => result.data);
      set(rides);
    } catch (e) {
      console.error(e);
    }
    // Socket update binding?
  });

  subscribe((rides) => console.debug('rides', rides));

  return {
    subscribe,
    refresh: () => loadRides().then((result) => update(() => result.data)),
  };
};
export const rides = createRides();

次に、過去と未来の乗り物用に 2 つの派生ストアを設定します。

export const pastRides = derived(
  rides,
  ($rides) => $rides
    .filter((ride) => ride.steps.every((step) => step.doneAt))
  ,
);
export const comingRides = derived(
  rides,
  ($rides) => $rides
    .filter((ride) => ride.steps.some((step) => !step.doneAt))
    .sort((rideA, rideB) => {
      const compare = new Date(rideA.date) - new Date(rideB.date);
      console.log(rideA.date, rideB.date, compare);
      return compare;
    })
  ,
);

2 番目のsortメソッドは効果がありません。

だから私はこの方法を1つの前に置こうとしましたfilter。それは機能しますが、 sort $pastRides. 実際、それは完全な$rides配列をソートしており、意味があります。

sortしかし、アフターが機能しない理由がわかりfilterません。

私は何を取りこぼしたか?

4

1 に答える 1