【发布时间】:2018-01-27 13:34:40
【问题描述】:
我有一个使用 ReactJS.net 松散工作的 Umbraco CMS。我有一个根<App> 组件,它采用(Umbraco 节点 ID 和路径)对象的数组prop,用于使用<Content> 组合为站点中的每个页面生成<Route>。 <App> 在 UmbracoViewPage 中呈现,并在客户端浏览器中呈现良好 - 使用 @Html.ReactInitJavaScript(),它会按预期得到水合。
<Content> 组件使用dangerouslySetInnerHTML 加载页面 HTML。我有一些自定义 Umbraco 网格编辑器,它们不是在 ASP .NET 视图中生成常规标记,而是调用 @Html.React() 来呈现自定义 React 组件,这可能需要一个或两个 prop。
在初始页面加载时,网格 HTML 是在服务器端生成的,这些嵌套组件在浏览器中工作正常,因为 ReactJS.net 正在为每个网格组件传递 ReactDOM.hydrate() 调用(由 @Html.ReactInitJavaScript() 触发)。
但是一旦前端路由发生变化,<App> 就会根据路径安装相关的<Content> 组合,这会调用带有 Umbraco 节点 ID 的 Umbraco SurfaceController。该节点的页面网格 HTML 像以前一样使用 dangerouslySetInnerHTML 返回和加载。
问题是我现在有原始 HTML,其中包含多个需要补水的 React 组件。因为它是在浏览器中加载的,所以不再有一个 @Html.ReactInitJavaScript() 调用单独为所有组件补水。
我怎样才能做到这一点?
【问题讨论】:
标签: asp.net-mvc reactjs umbraco reactjs.net