0

毎秒更新されるストアに接続するコンテナーがあります。

return ({ match, ui }, { matchId }) => ({
    value: match.getIn([matchId, 'masterCurrentTime'], 0), // about every second
    min: ui.get('seekStart'),
    max: ui.get('seekEnd'),
    highlightList: selectHighlights(matchId) // i only want to do this on first render
  });

ただし、プロパティの 1 つ (highlightList) は、次の 2 つのいずれかを行います。

1) sessionStorage から値を返す

また

2) ファイルをダウンロードし、それを sessionStorage に保存してから返します

もちろん、私はこれを毎秒やりたくありません。最初だけです。

このようなセレクターを作成しました

const selectHighlights = createSelector(
    matchId => matchId,
    matchId => {
      if (matchId !== null) {
        getTimelineWithFilter(matchId, ['round_start'])
          .then(timeline => {
            console.log(timeline);
            return timeline;
          })
          .catch(error => {
            throw new Error('failed to load highlights', error);
          });
      }

      return null;
    }
  );

しかし、それは機能しません。レンダリングされません。ただし、結果を変数に格納してからクエリを実行する代替バージョンを実行すると、うまくいきます。一度だけ実行し、好きなように実行します

// highlightList: currentTimeline === undefined ? loadHighlights(matchId) : currentTimeline,

これを正しい方法で行う方法を知りたいのですが、これについての知識を持っている人なら、ベストプラクティスのヒントを教えてもらえますか?

4

1 に答える 1