javascript - 如何在不使用 JSX 的情况下在 React 中使用 CanvasJS 元素?
问题描述
为什么不是 JSX?它根本行不通。我最近问了一个关于它的问题,并被建议删除该type="text/jsx"
属性,因此我只能使用 JS 语法。
从这个意义上说,我理解完全可以不用 JSX,例如
<button onClick={() => this.setState({liked: true})}>
Like
</button>
可以简单地改写为
React.createElement(
"button",
{onClick: () => this.setState({liked: true})},
"Like"
)
到目前为止,一切都很好。但是我将如何重写这样的东西呢?
<div>
<CanvasJS.Chart options = {options}
onRef={ref => this.chart = ref}
/>
<span id="timeToRender" style={spanStyle}></span>
</div>
这里,CanvasJS.Chart
不是原生的 HTML 标签,而是 CanvasJS 库中的一个类。我尝试创建一个实例
let canvasJSChart = new CanvasJS.Chart(
???,
{options, onRef: ref => this.chart = ref}
);
但是我不知道用什么代替???
,应该是图表容器的 DOM id,也就是上一个 JSX 示例中的外部div。我还不能访问那个元素,因为我需要在div的构造函数canvasJSChart
中作为参数“children”传递。
我还尝试使用另一个div来临时包含canvasJSChart
,然后才能将它传递给它的实际容器(与timeToRender
span一起),如下所示:
let timeToRender = React.createElement(
"span",
{id: "timeToRender", style}
);
let canvasJsChart = new CanvasJS.Chart(
"temp",
{options, onRef: ref => this.chart = ref}
)
React.createElement(
"div",
{},
// children:
timeToRender,
canvasJSChart
);
虽然timeToRender
完全没有给我带来任何问题并且渲染完美,但只要我添加canvasJSChart
到孩子,我就会得到一个Uncaught Error: Objects are not valid as a React child
,这真的很奇怪,因为timeToRender
它确实是一个对象,但它仍然可以完美地工作。
我错过了什么?如何让 CanvasJS 元素成为 React 元素的子元素?
解决方案
推荐阅读
- javascript - Django:日期格式管理和 unique_together ->“20/03/2020”值的日期格式无效。它必须是 YYYY-MM-DD 格式。”]
- flutter - 文本小部件显示在重新加载中但不在热重新加载中
- amazon-web-services - 我想创建一个只能由使用 Cognito 创建的用户在登录时访问的 S3 存储桶
- azure - Set-AzureRmDiagnosticSetting:找不到与参数名称“名称”匹配的参数
- java - Hibernate lucene 只搜索 60 条第一条记录
- php - 如何使用搜索和替换通过 API 修改 Google Docs 文档?
- java - 如何从java中的字符串中删除所有'\'字符
- c# - 当需要在属性中使用 HttpContext 时,对象引用未设置为对象的实例
- ipad - 有没有办法既不滑动页面又减小 Xamarin.iOS 上主详细信息菜单的宽度?
- java - 使用 glide 加载 gif 图像失败