reactjs - 如何在不使用 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()
但是正如您所看到的,这个文件不是组件,它是为了定义常量而创建的,那么,我怎样才能订阅它来获得更新的状态呢?
解决方案
即使您可以在不使用的情况下连接组件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)
推荐阅读
- c# - C# 更新表格按钮不自动工作
- javascript - 如何在 Firebase 模拟器中发布发布/订阅消息?我已经启动并运行了一个订阅主题的函数
- heroku - Heroku 应用程序因 psiturk 实验而崩溃(H10 错误)
- excel - 如果 Col A 包含列表中的关键字,如何将值(文本)返回到 col B 中最大值(数字)的左侧?
- c++ - 过早退出和析构函数
- xamarin - Xamarin Forms:IsVisible 绑定无法正常工作
- r - 如何测试 Cox 模型的拟合优度
- google-bigquery - 将 INT 中的日期转换为 Google Calendar API 的 CreateEvent 的 DateTime
- python - 有没有办法在不使用模型或数据库的情况下在 django 中使用熊猫
- java - 为什么我在线程“main”java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/util/JacksonFeature 在运行时出现异常?