2017-03-03 11 views
2

私は2回目のディスパッチを行わないようにレビュックスアクションにフラグを立てる方法を知りたいと思います。還元アクションは一度だけ実行する方法は?

let triggerOnce = false; 

export function populateStore() { 
    return (dispatch) => { 
    if (triggerOnce) return; 

    dispatch({ 
     type: ReviewActions.UPDATE_REVIEW_STATE, 
     data: review, 
    }); 

    triggerOnce = true; 
    }; 
} 

あなたが今見ることができるように、私はフラグを立てるために外部変数を使用しています...それはあまり良くありません。より良い方法があるかどうか疑問に思う。ご意見ありがとうございました

+0

'populateStore'はどのようなディスパッチですか? 'triggerOnce'はおそらく状態に格納されていなければなりません。 'populateStore'を呼び出すことによって、ディスパッチする前にこのフラグをチェックできます。 – CodingIntrigue

+0

@CodingIntrigueこれは良いアイデアです – Bruce

答えて

1

私はあなたの文脈を正確には分かりませんので、私は間違っているとお詫び申し上げます。グローバルスコープでフラグを設定するのではなく、アクションを1回だけ呼び出す方法を見つけようとします。これが望ましくない場合は、減算器にフラッグを設定してから、trueに設定することができます。

const initialState = { 
    hasBeenSet: false, 
    ...restOfState, 
} 

const events = { 
    [UPDATE_REVIEW_STATE]: (state) => { 
    const { hasBeenSet } = state; 

    return hasBeenSet ? state : { ...state, hasBeenSet: true }; 
    }, 
}; 

私は助けてくれることを願っています!

+1

あなたの提案のためのthxバディ – Bruce

関連する問題