Reactjs 如何在不使用connect()的情况下连接或订阅Redux存储?
在react应用程序中,我有一个常量文件,我在其中创建了一个HTML字符串对象,在这些HTML字符串中,我必须传递一些存储在Reactjs 如何在不使用connect()的情况下连接或订阅Redux存储?,reactjs,redux,react-redux,redux-store,Reactjs,Redux,React Redux,Redux Store,在react应用程序中,我有一个常量文件,我在其中创建了一个HTML字符串对象,在这些HTML字符串中,我必须传递一些存储在store中的状态的动态值,下面是我常量文件的结构(这是一个示例结构,实际文件大约有18-20个HTML字符串对象): 从“../store”导入存储; 让storeState=store.getState(); 让动态_数据_from_Store=storeState.initAppReducer.clientData; 常量HTML_消息={ 请求_选项:“+dynam
store
中的状态的动态值,下面是我常量文件的结构(这是一个示例结构,实际文件大约有18-20个HTML字符串对象):
从“../store”导入存储;
让storeState=store.getState();
让动态_数据_from_Store=storeState.initAppReducer.clientData;
常量HTML_消息={
请求_选项:“+dynamic_Data_from_Store+”即使您可以在不使用connect
的情况下连接组件,但这并没有真正的帮助,因为存储仅在运行时可访问,而不是在模块初始化时
这取决于您打算如何使用它,但您可以将HHTML_消息设置为函数,而不是普通对象:
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;
即使您可以在不使用connect
的情况下连接组件,这也不会真正有帮助,因为存储区只能在运行时访问,而不能在模块初始化时访问
这取决于您打算如何使用它,但您可以将HHTML_消息设置为函数,而不是普通对象:
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;
如果您想得到最新的字符串,那么考虑创建一个函数,它将获取最新的ReDux状态,然后返回最新的HTML字符串。
import store from '../store';
function getHtmlMsg() {
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"
}
return HTML_MESSAGES;
}
export default getHtmlMsg;
从“../store”导入存储;
函数getHtmlMsg(){
让storeState=store.getState();
让动态_数据_from_Store=storeState.initAppReducer.clientData;
常量HTML_消息={
RealestyPosits:“+ DyrimeDATAOA.AuthStury+”如果您想得到最新的字符串,那么考虑创建一个函数,该函数将获取最新的ReDux状态,然后返回最新的HTML字符串。
import store from '../store';
function getHtmlMsg() {
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"
}
return HTML_MESSAGES;
}
export default getHtmlMsg;
从“../store”导入存储;
函数getHtmlMsg(){
让storeState=store.getState();
让动态_数据_from_Store=storeState.initAppReducer.clientData;
常量HTML_消息={
请求_选项:“+dynamic_Data_from_Store+”这是我在读了@remix23的评论后得出的结论
在我的组件中,无论我在哪里使用我的HTML_消息
,我都会将其连接到存储,然后用我所需的存储状态替换定义的占位符。例如:
使用我的常量文件的我的组件:
import React, { Component, Fragment } from 'react';
import { connect } from 'react-redux';
import CONSTANTS from '../../../utils/Constants';
import HTML_MESSAGES from "../../../config/html_inserts";
class InsertMessages extends Component {
createDataMessage = (type) => {
let msg = '';
switch (type) {
case CONSTANTS.REQUEST_OPTIONS:
msg = HTML_MESSAGES.REQUEST_OPTIONS;
break;
case CONSTANTS.ENQUIRY_OPTIONS:
msg = HTML_MESSAGES.ENQUIRY_OPTIONS.replace('<clientData>', this.props.cliendData);
break;
default:
break;
}
return msg;
}
insertMessages = (type) => {
let content = this.createDataMessage(type);
let insert = //gql insert query
return insert;
}
render() {
return (
<Fragment>
{this.insertMessages(type)}
</Fragment>
)
}
}
const mapStateToProps = state => {
return {
cliendData: state.initAppReducer.clientData
};
};
export default connect(mapStateToProps, null)(InsertMessages);
import React,{Component,Fragment}来自'React';
从'react redux'导入{connect};
从“../../../utils/CONSTANTS”导入常量;
从“../../../config/HTML\u inserts”导入HTML\u消息;
类InsertMessages扩展组件{
createDataMessage=(类型)=>{
让msg='';
开关(类型){
case CONSTANTS.REQUEST_选项:
msg=HTML\u MESSAGES.REQUEST\u选项;
打破
案例常量。查询选项:
msg=HTML\u MESSAGES.inquiry\u OPTIONS.replace(“”,this.props.cliendData);
打破
违约:
打破
}
返回味精;
}
insertMessages=(类型)=>{
让content=this.createDataMessage(类型);
let insert=//gql insert查询
返回插入;
}
render(){
返回(
{this.insertMessages(类型)}
)
}
}
常量mapStateToProps=状态=>{
返回{
cliendData:state.initAppReducer.clientData
};
};
导出默认连接(MapStateTops,null)(插入消息);
这是我在阅读了@remix23的评论后得出的结论
在我的组件中,无论我在哪里使用我的HTML_消息
,我都会将其连接到存储,然后用我所需的存储状态替换定义的占位符。例如:
使用我的常量文件的我的组件:
import React, { Component, Fragment } from 'react';
import { connect } from 'react-redux';
import CONSTANTS from '../../../utils/Constants';
import HTML_MESSAGES from "../../../config/html_inserts";
class InsertMessages extends Component {
createDataMessage = (type) => {
let msg = '';
switch (type) {
case CONSTANTS.REQUEST_OPTIONS:
msg = HTML_MESSAGES.REQUEST_OPTIONS;
break;
case CONSTANTS.ENQUIRY_OPTIONS:
msg = HTML_MESSAGES.ENQUIRY_OPTIONS.replace('<clientData>', this.props.cliendData);
break;
default:
break;
}
return msg;
}
insertMessages = (type) => {
let content = this.createDataMessage(type);
let insert = //gql insert query
return insert;
}
render() {
return (
<Fragment>
{this.insertMessages(type)}
</Fragment>
)
}
}
const mapStateToProps = state => {
return {
cliendData: state.initAppReducer.clientData
};
};
export default connect(mapStateToProps, null)(InsertMessages);
import React,{Component,Fragment}来自'React';
从'react redux'导入{connect};
从“../../../utils/CONSTANTS”导入常量;
从“../../../config/HTML\u inserts”导入HTML\u消息;
类InsertMessages扩展组件{
createDataMessage=(类型)=>{
让msg='';
开关(类型){
case CONSTANTS.REQUEST_选项:
msg=HTML\u MESSAGES.REQUEST\u选项;
打破
案例常量。查询选项:
msg=HTML\u MESSAGES.inquiry\u OPTIONS.replace(“”,this.props.cliendData);
打破
违约:
打破
}
返回味精;
}
insertMessages=(类型)=>{
让content=this.createDataMessage(类型);
let insert=//gql insert查询
返回插入;
}
render(){
返回(
{this.insertMessages(类型)}
)
}
}
常量mapStateToProps=状态=>{
返回{
cliendData:state.initAppReducer.clientData
};
};
导出默认连接(MapStateTops,null)(插入消息);
我不知道您为什么要这样做?我建议为所有人创建react组件(即请求选项、查询选项)等连接到redux store,然后只使用这些组件。@PrakashSharma我正在使用这些html字符串常量插入数据库中以供进一步使用。。当然,创建UI组件的理想方法是使用单个组件。我不确定为什么要这样做?我建议为所有用户创建react组件(即请求选项、查询选项)等连接到redux store,然后只使用这些组件。@PrakashSharma我正在使用这些html字符串常量插入db以供进一步使用。当然,创建UI组件的理想方法是使用单个组件。我正在使用这些html字符串常量插入db以供进一步使用,我已经给出了一个示例代码在这里,它是一个大约有18-20个html字符串的对象…好的,那么你可以编辑你的帖子来添加在DB中调用insert的React代码。如果可以,我将编辑我的答案。我使用这些html字符串常量