如何让客人改变redux状态?

时间:2018-02-23 04:33:14

标签: reactjs redux

在我的网络应用中,经过身份验证的用户可以从他的spotify播放列表中选择要播放的歌曲。我希望访客(未经身份验证的用户)能够查看所选歌曲并在他们自己的设备(可能是手机)上对他们喜欢的歌曲进行投票,这意味着他们将能够改变应用的状态。

我正在使用Mongo,Express,React with Redux,Node full stack。

我的计划是存储挑选的歌曲并将其放入我的数据库中,我的应用程序将生成一个动态创建的反应路径,该路径将GET请求数据库中的歌曲并在此路线上显示它们。客人只能进入这条路线。

如果我的访客只能访问我提供给他们的路线,如何将我的访客连接到我应用的redux商店?甚至可以连接它们吗?

2 个答案:

答案 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负责在浏览器中使状态持久化,以防你刷新页面。也可能需要(尝试显示歌曲列表然后刷新页面),但与您的问题无关。