毎秒更新されるストアに接続するコンテナーがあります。
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,
これを正しい方法で行う方法を知りたいのですが、これについての知識を持っている人なら、ベストプラクティスのヒントを教えてもらえますか?