在我的网络应用中,经过身份验证的用户可以从他的spotify播放列表中选择要播放的歌曲。我希望访客(未经身份验证的用户)能够查看所选歌曲并在他们自己的设备(可能是手机)上对他们喜欢的歌曲进行投票,这意味着他们将能够改变应用的状态。
我正在使用Mongo,Express,React with Redux,Node full stack。
我的计划是存储挑选的歌曲并将其放入我的数据库中,我的应用程序将生成一个动态创建的反应路径,该路径将GET请求数据库中的歌曲并在此路线上显示它们。客人只能进入这条路线。
如果我的访客只能访问我提供给他们的路线,如何将我的访客连接到我应用的redux商店?甚至可以连接它们吗?
答案 0 :(得分:0)
您可以创建中间件并将其添加到商店
import { createStore, applyMiddleware, compose } from "redux";
const customMiddleWare = store => next => action => {
if(store.user.isAuthenticated === true){
next(action)
}else{
// You are only allowing non-authentic user to see the list. only those actions will be accessible to that user
if(action.type === 'FETCH_SONGS'){
next(action)
}
}
};
const middleware = [customMiddleWare];
const store = createStore(
greetingReducer,
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__(),
compose(applyMiddleware(...middleware))
);
答案 1 :(得分:0)
根据以下评论,我希望我现在明白你的要求。
应用程序需要始终将redux存储更新为数据库的最新内容 - 无论它是登录用户还是来宾。两种类型的用户都需要访问商店,并且应该在他们需要更新商店时启动操作。
我在问题的评论中提到的redux-persist负责在浏览器中使状态持久化,以防你刷新页面。也可能需要(尝试显示歌曲列表然后刷新页面),但与您的问题无关。