Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将应用程序设置从ASP.NET核心MVC控制器传递到ReactJS/Redux ClientApp?_Reactjs_Redux_Asp.net Core Mvc_Asp.net Core 2.0_Server Side Rendering - Fatal编程技术网

如何将应用程序设置从ASP.NET核心MVC控制器传递到ReactJS/Redux ClientApp?

如何将应用程序设置从ASP.NET核心MVC控制器传递到ReactJS/Redux ClientApp?,reactjs,redux,asp.net-core-mvc,asp.net-core-2.0,server-side-rendering,Reactjs,Redux,Asp.net Core Mvc,Asp.net Core 2.0,Server Side Rendering,我试图弄清楚如何将APIRL设置从我的AppSettings.json获取到我的ReactJS/Redux状态 但是,我发现下面的文章是针对Angular的。 我能够使用该示例将我的MVC页面更改为: @使用Microsoft.Extensions.Configuration@InjectIConfiguration配置{ViewData[“Title”]=“主页”} 加载。。。 @节脚本{ }花了一点时间才弄明白,但下面是解决方案 如果您尚未为Redux创建用于存储通用应用程序设置的缩减器

我试图弄清楚如何将APIRL设置从我的AppSettings.json获取到我的ReactJS/Redux状态

但是,我发现下面的文章是针对Angular的。

我能够使用该示例将我的MVC页面更改为:

@使用Microsoft.Extensions.Configuration@InjectIConfiguration配置{ViewData[“Title”]=“主页”}
加载。。。
@节脚本{

}
花了一点时间才弄明白,但下面是解决方案

  • 如果您尚未为Redux创建用于存储通用应用程序设置的缩减器,请创建一个。这是我的减速机:
  • 导入{
    行动,
    减速器
    }来自“redux”;
    // -----------------
    //状态-定义Redux存储中维护的数据类型。
    导出接口应用程序设置状态{
    apirl:string
    }
    // -----------------
    //操作-这些是状态转换的可序列化(因此可重放)描述。
    //它们本身没有任何副作用;他们只是描述即将发生的事情。
    //使用@typeName和isActionType进行类型检测,即使在序列化/反序列化之后也能正常工作。
    导出接口SetApiUrlAction{
    键入:“SET_apirl”;
    apirl:string
    }
    //声明“受歧视的联合”类型。这保证了对“type”属性的所有引用都包含
    //声明的类型字符串(而不是任何其他任意字符串)。
    类型KnownAction=SetApiUrlAction;
    // ----------------
    //动作创建者-这些是向UI组件公开的函数,将触发状态转换。
    //它们不会直接改变状态,但会产生外部副作用(如加载数据)。
    导出常量actionCreators={
    setApiUrl:(url:string)=>{
    键入:“SET_apirl”,
    apiUrl:url
    }
    };
    // ----------------
    //REDUCER-对于给定的状态和操作,返回新状态。为了支持时间旅行,这不能改变旧的状态。
    导出常量减速机:减速机=(状态:AppSettingsState,输入操作:操作)=>{
    常量动作=作为已知动作输入动作;
    开关(动作类型){
    案例“SET_apirl”:
    返回{
    ApiUrl:action.ApiUrl
    };
    违约:
    //下一行保证KnownAction union中的每一项操作都包含在上述案例中
    const defactvecheck:never=action.type;
    }
    //对于无法识别的操作(或在操作无效的情况下),必须返回现有状态
    //(如果未提供,则为默认初始状态)
    返回状态| |{
    ApiUrl:“http://localhost:5001/"
    };
    
    };另一个答案对我有效,我只需要添加一个常量服务类来读取这个值

    class ConfigService {
        Uri: string;
    
        public initialize(): void {
            if (this.Uri) return;
            var ell = document.getElementById('site-props');
            var jsontext = ell!.innerText;
            var siteProps = JSON.parse(jsontext);
            this.Uri = siteProps.Uri;
        } 
    }
    
    const configService = new ConfigService();
    export default configService;