首页 > 解决方案 > 如何在不使用 connect() 的情况下连接或订阅 Redux Store?

问题描述

在反应应用程序中,我有一个常量文件,在其中创建了一个 HTML 字符串对象,在这些 HTML 字符串中,我必须从存储的状态中传递一些动态值store,下面是我的常量文件的结构(它是一个示例结构,实际文件有大约 18-20 个 html 字符串对象):

import store from '../store';
let storeState = store.getState();
let dynamic_Data_from_Store = storeState.initAppReducer.clientData;

const HTML_MESSAGES = {
    REQUEST_OPTIONS: "<div>"+dynamic_Data_from_Store+"</div",
    ENQUIRY_OPTIONS: "<div>"+dynamic_Data_from_Store+"</div",
    OTHER_VALUES: "<div>"+dynamic_Data_from_Store+"</div"
}

export default HTML_MESSAGES;

在上面的代码片段中,只有初始商店状态可用,但以后更新的商店状态不可用。根据文档,我们必须让组件订阅 redux 存储才能通过connect()

但是正如您所看到的,这个文件不是组件,它是为了定义常量而创建的,那么,我怎样才能订阅它来获得更新的状态呢?

标签: reactjsreduxreact-reduxredux-store

解决方案


即使您可以在不使用的情况下连接组件connect也无济于事,因为商店只能在运行时访问,而不是在模块初始化时访问。

这取决于您打算如何使用它,但您可以将 HHTML_MESSAGE 设为函数而不是普通对象:

function HTML_MESSAGES(dynamic_Data_from_Store) => {
    REQUEST_OPTIONS: "<div>"+dynamic_Data_from_Store+"</div",
    ENQUIRY_OPTIONS: "<div>"+dynamic_Data_from_Store+"</div",
    OTHER_VALUES: "<div>"+dynamic_Data_from_Store+"</div"
}

export default HTML_MESSAGES;

从您导入 HTML_MESSAGE 的位置(希望在连接的组件中),您将能够将 dynamic_data 传递给 HTML_MESSAGE函数

HTML_MESSAGE(dynamic_Data_from_Store)

推荐阅读