如何将应用程序设置从ASP.NET核心MVC控制器传递到ReactJS/Redux ClientApp?
我试图弄清楚如何将APIRL设置从我的AppSettings.json获取到我的ReactJS/Redux状态 但是,我发现下面的文章是针对Angular的。 我能够使用该示例将我的MVC页面更改为:如何将应用程序设置从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创建用于存储通用应用程序设置的缩减器
@使用Microsoft.Extensions.Configuration@InjectIConfiguration配置{ViewData[“Title”]=“主页”}
加载。。。
@节脚本{
}
花了一点时间才弄明白,但下面是解决方案
导入{
行动,
减速器
}来自“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;