【问题标题】:Redux state value globallyRedux 全局状态值
【发布时间】:2016-11-24 06:55:29
【问题描述】:

我有一个帮助类,它提供有关登录用户的信息。我想把它作为一个静态方法并在几个地方使用它(不是反应组件)

如何在类模型中访问 redux 存储值?

【问题讨论】:

    标签: reactjs redux


    【解决方案1】:

    如果您可以在应用程序中管理它,那么使用依赖注入 (DI) 传递它会比使用全局变量、静态变量或单例变量更简洁(并且更易于测试)。在一个简单的形式中,你可以像这样在构造函数中传递它:

    var store = createStore(...);
    var app = new AppClass(store);
    

    【讨论】:

      【解决方案2】:

      如果您没有使用 Webpack 之类的打包工具,Lukas Katayama 的回答应该可以使用 window.store = createStore(...),但如果您使用的是打包工具,您还可以通过导出并在需要的位置导入来公开您的 redux 存储。

      //store.js
      export const store = createStore(...);
      
      //other file
      import { store } from './store.js';
      
      const someFuncOrClass = (...) => {
          const user = store.getState().userInfo;
      }
      

      【讨论】:

        【解决方案3】:

        一种方法可以设置一个全局变量

        window.store = createStore(...)
        

        并使用它,访问 window.store

        【讨论】:

          【解决方案4】:

          看起来像一个简单的实现。您可以在 creatStore(...) 所在的同一文件中创建用于存储的 getter。

          store.js

          import { createStore } from 'redux';
          
          let store = {};
          
          export default function store(...) {
              /*
               * things to do before creating store
               */
          
              store = createStore(...);
              return store;
          }
          
          export function getStore() {
              return store;
          }
          

          helper.js

          import { getStore } from './store';
          
          export function getUserInfo() {
              const store = getStore();
              const globalState = store.getState();
          
              return globalState.userInfo;
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-10-28
            • 1970-01-01
            • 2020-08-06
            • 2020-12-29
            • 1970-01-01
            • 2018-05-02
            • 2018-09-16
            • 1970-01-01
            相关资源
            最近更新 更多