当前位置: 首页 > 知识库问答 >
问题:

将一段代码转换为jsx时出现问题

邢勇
2023-03-14

我是新来的反应。所以请原谅我的天真。我有以下一段反应代码:

import { Line } from '@antv/g2plot';

const data = [
  { year: '1991', value: 3 },
  { year: '1992', value: 4 },
  { year: '1993', value: 3.5 },
  { year: '1994', value: 5 },
  { year: '1995', value: 4.9 },
  { year: '1996', value: 6 },
  { year: '1997', value: 7 },
  { year: '1998', value: 9 },
  { year: '1999', value: 13 },
];

const linePlot = new Line(document.getElementById('container'), {
  title: {
    visible: true,
    text: 'DEF',
  },
  description: {
    visible: true,
    text: 'ABC',
  },
  padding: 'auto',
  forceFit: true,
  data,
  xField: 'year',
  yField: 'value',
  smooth: true,
});

linePlot.render();

我需要在类中转换上面的代码并将其导出:我编写了下面的代码

import React, { useEffect } from "react";
import { Line } from "
@antv
/g2plot";
export const YourComponentName = function() {
const [linePlot, setlinePlot] = useState(initialState);
const data = [
{ year: "1991", value: 3 },
{ year: "1992", value: 4 },
{ year: "1993", value: 3.5 },
{ year: "1994", value: 5 },
{ year: "1995", value: 4.9 },
{ year: "1996", value: 6 },
{ year: "1997", value: 7 },
{ year: "1998", value: 9 },
{ year: "1999", value: 13 }
];
useEffect(() => {
setlinePlot(
new Line(document.getElementById("container"), {
title: {
visible: true,
text: "DEF"
},
description: {
visible: true,
text: "ABC"
},
padding: "auto",
forceFit: true,
data,
xField: "year",
yField: "value",
smooth: true
})
);
return () => {
// you can clanup here
};
}, [linePlot]);
return; //jsx from here with state which you want to render.
};

但是,因为这是一个容器类,所以我不希望在我的this组件类中使用“document..getElementById(“容器”)。我的index.js已经有了

ReactDOM.render(<Main />, document.getElementById("container"));

请帮帮我。

共有2个答案

琴镜
2023-03-14

在React中,您可以有一个功能组件或一个基于类的组件。您已经使用了reactuseStateuseffect挂钩,它们仅用于功能组件,不能用于基于类的方法。

只是旁注。本文讨论了为什么不应该更新useffect钩子中的状态。

是否希望在加载构件时创建一次线?

另一张纸条。您提到的“下面的代码”不使用类的。

*编辑
这里是一个基本的反应实现,但是,由于你使用的是antv/g2plot。行我不能让它更新图表而不覆盖在旧的上面。通过快速浏览文档,我建议将其更改为图表。

须曜文
2023-03-14

我从其他社区平台得到了答案。如果有人面临类似问题,我会将其粘贴到此处:

import ReactDOM from "react-dom";
import React from "react";

import { Line } from "@antv/g2plot";
import ReactG2Plot from "react-g2plot";


class SampleReact extends React.Component {
  render() {
    const data = [
        { year: "1991", value: 3 },
        { year: "1992", value: 4 },
        { year: "1993", value: 3.5 },
        { year: "1994", value: 5 },
        { year: "1995", value: 4.9 },
        { year: "1996", value: 6 },
        { year: "1997", value: 7 },
        { year: "1998", value: 9 },
        { year: "1999", value: 13 }
      ];
      const config = {
        title: {
          visible: true,
          text: "曲线折线图"
        },
        description: {
          visible: true,
          text: "用平滑的曲线代替折线。"
        },
        padding: "auto",
        forceFit: true,
        data,
        xField: "year",
        yField: "value",
        smooth: true
      };
    return (
        <ReactG2Plot Ctor={Line} config={config} />

    );
  }
}
export default SampleReact;
 类似资料:
  • 我试图转换我的jsx代码到js使用巴贝尔。 巴贝尔——预设es2015,react——缩小版finan。js-o/已编译/已编译。js 错误:在Function中找不到模块js令牌。模块。_resolveFilename(module.js:325: 15)在函数。模块。_load(module.js:276: 25)在Module.require(module.js:353: 17)在要求(内部

  • 我试图转换在JSX中定义备用路由组件的方式,一个等效的TypeScript TSX文件。(1) JSX语法如下所示: 我试图将其转换为TypeScript,但在Visual Studio中,

  • 我正在研究lib,它使用了很多文件系统函数。 我想要的是,我的函数根据errno返回各种错误代码(而不仅仅是-1作为错误),以防文件系统函数失败。 虽然我可以直接使用errno值,但我希望在函数,错误代码和系统errno之间创建一些抽象层(例如,我的错误值从-1000开始,并且是负值,而errno值是正值)。 我的问题是什么是最好的实现方式。 现在我看到两种可能的解决方案: 使用带有错误代码的枚举

  • 我有以下java代码: 我想将其转换为smali code 我怎么能这样做?(我尝试了java2smali插件,但失败了)

  • 问题内容: 我正在尝试从EditText字段中将两个数字加在一起。到目前为止,我有下面的代码,我相信它会将EditText字段“ pos1_deg”和“ pos2_deg”转换为整数deg1和deg2。 然后,我可以执行以下操作将它们添加在一起 然后degSum寄存器保存deg1和2的和。 然后要输出回“结果” EditText,我需要将整数degSum更改为字符串。我认为正确的方法是使用以下代码

  • 我现在正在解析一个26页的文件。带有图像、表格、斜体和下划线的docx。我能清除 我使用ApachePOI创建了带有XWPF段落列表的XWPF文档格式。当我遍历XWPF段落时,如果一个段落包含不同的样式,我无法获得各行的样式(斜体、下划线、粗体)。 我尝试过使用XWPF。段落getrun()。XWPF。。。跑getfamilyfont()我将得到null。但是当我运行XWPF时,我在段落级别获得数