私はフラックスアーキテクチャと反応して使用していますが、直面している問題があります。
ユーザー ID を取得してユーザーをフェッチするアクションを作成する必要があります。コードは次のとおりです。
var createAction = require('common/scripts/actions-helpers/create-action'),
resource = require('common/scripts/resources/conversation');
module.exports = createAction(fetchAction);
function fetchAction(context, payload, success, failure) {
resource.sync(context, payload.userId)
.then(function(user) {
context.dispatch('USER_FETCH', user);
success();
}, failure);
}
すべてのユーザーをキャッシュするストアを使用したいので、ユーザーが以前にフェッチした場合、アクションはバックエンド呼び出しを実行しません。新しいアクションは次のようになります。
function getFetchedUser() {
// <--------- HOW TO KNOW WHETHER USER FETCHED?
}
function fetchAction(context, payload, success, failure) {
var user = getFetchedUser();
if (user) {
context.dispatch('USER_FETCH', user);
success();
} else {
resource.sync(context, payload.userId)
.then(function(user) {
context.dispatch('USER_FETCH', user);
success();
}, failure);
}
}
問題は、アクションでユーザー データを管理したくないということです。そのため、getFetchedUser() を実装する唯一の方法は、Users ストアをチェックインすることです。
これは良いアプローチですか?
アクションはストアにアクセスできますか?