2017-11-09 14 views
1

私はReactアプリケーションを持っており、状態はReduxストアを通じて維持されています。私は最初にサイトを読み込む毎日一度だけポップアップメッセージをユーザーに表示したい。React-Reduxは毎日1回しかポップアップを表示しません

ローカルストレージを使用して、最後のポップアップがいつだったかを覚えて、最後のポップアップの表示日が今日でない場合にのみポップアップを表示することが理想的です。

私は、これを行うための反応が遅い方法があるかどうか、そしてこれに既に利用可能なライブラリがあるかどうかを知りたいと思います。

答えて

2

ストアの状態(またはその一部)をローカルストレージに保存するために使用できるquite a few librariesがあります。

多分、一番人気のあるのはredux-persistです。あなたはそれを使用するような何か行うことができます:

import { combineReducers } from 'redux' 
import { persistStore, persistReducer } from 'redux-persist' 
import storage from 'redux-persist/es/storage' 

const modalReducer = (state = {}, action) => { 
    switch (action.type) { 
    case 'SHOW_MODAL': 
     return { 
     ...state, 
     display: true, 
     lastShown: new Date() 
     } 
    case 'HIDE_MODAL': 
     return { 
     ...state, 
     display: false 
     } 
    default: 
     return state 
    } 
} 

const modalPersistConfig = { key: 'modal', blacklist: ['display'], storage } 

const rootReducer = combineReducers({ 
    modal: persistReducer(modalPersistConfig, modalReducer) 
    // other reducers 
}) 

const store = createStore(reducer) 
persistStore(store) 

を次に、あなたは、店舗(store.getState().modal.lastShown)で日付を確認することができますし、それが今日の日付でなければSHOW_MODALアクションを派遣します。

+0

私はredux-localStorageで遊んでいましたが、これは実装と保守が非常に簡単です。私はすぐにこれを試してみるつもりです。ありがとう:) –

+0

私は確かにredux-localstorageも仕事に良いと思います。私は前にどちらかを実際に使っていないので、どうやってそれをどうやって聞くのが大好きです。 –

関連する問題