Reactjs 如何在不使用connect()的情况下连接或订阅Redux存储?

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

在react应用程序中,我有一个常量文件,我在其中创建了一个HTML字符串对象,在这些HTML字符串中,我必须传递一些存储在
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字符串常量