javascript - 是否可以将道具/数据传递给嵌入“纯”HTML 中的 React 组件?
问题描述
我需要对一个非常古老的学校网站进行一些更新。目前布局是基于表格和手动编码的。我的想法是使用 React 来消除一些重复的编码,特别是循环遍历数据数组并使用 JSX 构造表格行。我看到可以在此处将 React 组件嵌入 HTML 中——https://reactjs.org/docs/add-react-to-a-website.html——但我不确定如何使这些组件可重用,也就是说,我不确定如何将道具从 HTML 文件传递给它们。
我的计划是从特定于每个 html 页面的文件中读取数据数组
<script type="text/javascript" src="data_page_x.js"></script>
然后将它传递给组件,组件会将其作为道具读取,然后吐出表格行。
这可能吗?有更好的方法吗?
解决方案
你可以使用类似的东西:
const initialData = document.getElementById('initial-data').textContent;
ReactDOM.render(
<MyReactElement initialData={JSON.parse(initialData)} />,
document.getElementById('root')
);
或者,如果您不使用 JSX,则可以使用将数据传递给 ReactElementReact.createElement
https://reactjs.org/docs/react-api.html#createelement
使用传递数据React.createElement
const domContainer = document.querySelector('#like_button_container');
const e = React.createElement;
ReactDOM.render(
e(
LikeButton,
{initialData: JSON.parse(initialData)}
), domContainer);
推荐阅读
- biztalk - BizTalk 适配器与 Oracle 云上的 Oracle E-Business Suite 集成?
- css - CSS:错误的元素宽度和位置 IE11(flexbox、位置、变换)
- xamarin.forms - PRISM - Xamarin 表单 - 在 MasterDetailPage 的某些详细信息页面上禁用 IsGestureEnable
- sql - sql查询(id,parentId)结构中的分层累积和
- ios - 应用程序适用于 iphone 11 但不适用于 iphone 8
- linux - 运行 Docker 镜像 ros:kinetic 时出现问题(standard_init_linux.go:211: exec user process 导致“exec format error”)
- google-cloud-platform - 当某个属性通过某个值时设置 BigQuery 警报
- python - 如何为我的网络抓取找到合适的元素?
- c - eclipse C中的调试问题(不等待输入)
- jquery - 为什么我的 Slick Slider 轮播会创建一个额外的点和幻灯片,而没有内容可以建议这样做?