gpt4 book ai didi

javascript - 在同一个 app.js 中渲染来自不同 HTML 页面的多个 DOM 元素

转载 作者:行者123 更新时间:2023-12-03 03:49:06 25 4
gpt4 key购买 nike

总的来说,我是 ReactJs 或 UI 编码的新手。我的 ReactJs 应用程序中有一个入口点 - app.js

var React = require("react");
var ReactDOM = require("react-dom");
import Main from "./components/Main";
import Bucket from "./components/Bucket";
import Relay from "react-relay";

ReactDOM.render(<Main />,document.getElementById('react'));
ReactDOM.render(<Bucket />,document.getElementById('react-bucket'));

console.log(Relay.QL`query Test {ServerGroups {_id}}`);

我正在尝试在这里渲染buckets.html页面:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>RGR</title>
<script src="react-0.14.3.min.js"></script>
<script src="react-dom-0.14.3.min.js"></script>
</head>
<body>

<div id="react-bucket"></div>
<script src="bundle.js"></script>
<body>
</html>

当我转到index.html页面时,一切都呈现良好。但是当我进入buckets.html页面时,我得到了一个

未捕获错误:_registerComponent(...):目标容器不是 DOM 元素错误

当我尝试在 app.js 中仅渲染一个元素(注释掉 Main 组件渲染或 Bucket 组件渲染)时,两个组件都渲染得很好。所以组件本身是没有问题的。

从bucket.html和index.html读取app.js显然存在问题。在这种情况下如何访问buckets.html和index.html?这可能吗?

谢谢!!

最佳答案

尝试将项目拆分为多个这样的 HTML 文件是非常有问题的。它在某种程度上击败了 React 的超能力之一——制作 SPA 或“单页应用程序”。执行此操作的“React-ful”方法实际上是使用 React-Router。

React-Router 允许您在项目中指定“路由”,因此您可以使用 example.com/example.com/bucket在项目中渲染不同的组件,而无需实际更改页面。查看this demo来理解我的意思。

我强烈建议您自己进行研究并查看 React-Router docs ,但它可能看起来像这样:

let App = (
<Router>
<Route path="/" component={Main} />
<Route path="/bucket" component={Bucket} />
</Router>
);

ReactDOM.render(App, document.getElementById('react'));

现在,当您访问example.com/时,React 将渲染 <Main />组件,如果您转到 example.com/bucket它将呈现 <Bucket /> 。这是一个高度简化的示例 - 还有其他需要考虑的事情,例如 <Link /> s、默认路由、404、服务器端处理等。但这几乎正是您所需要的,非常现代,并且是为 React 量身定制的。

关于javascript - 在同一个 app.js 中渲染来自不同 HTML 页面的多个 DOM 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45243635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com