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

ReactJS:创建组件,不对非React库使用render

赫连骏
2023-03-14

您可以使用React从Ajax调用返回的数据创建路由器链接(或其他组件)吗?不使用呈现函数。

背景:我们有一个大型的第三方非React javascript库,它可以从AJAX调用中动态呈现HTML。我们控制输入(即ajax-response),但不控制输出。我想输入链接(一个href),并将它们呈现为React路由器链接。为了包装非React组件,我创建了一个组件,它基本上有两个部分:componentDidMount,我在这里初始化组件;render,我在这里输出一个div(用于第三方javascript库)。理想情况下,我们希望直接从Ajax-Response注入reactJS组件:

[{'textToRender': '<Link to="/home" title="home">home</Link>'}]

不幸的是,这只会呈现文本:

<Link to="/home" title="home">home</Link>

你知道这是否可能吗?

Update:非react组件有点复杂,但为了解决这个问题,让我们假设它接受一个ajax-url参数,并将输出呈现给该div。nonreact组件需要来自AJAX的HTML输入,但是我能够在将HTML注入该组件之前执行javascript。

即。非react组件从AJAX调用中获取数据并更新其div。

因此init如下所示:

componentDidMount() {
  $('#nonreact').NonReact({ 'ajax': 'http://someurl..', 'transform' : function(data) { //here I can run some JS-code prior to nonrect render; return data; } });
}

组件呈现如下所示:

render() {
  return (
   <div id="nonreact"></div>
  )
}

共有1个答案

段宏毅
2023-03-14

您可以这样做:

componentDidMount() {
    $('#nonreact').NonReact({
        ajax: 'http://someurl..',
        transform: (data) => {
            // 1. transform data to some intermediate format
            // {to: '/home', title: 'home', text: 'home'}
            const {text, ...props} = transform(data);

            // 2. create React element and set it to `link` state
            this.setState({
                link: React.createElement(Link, props, text);
            });
        }
    });
}
render() {
    // 3. Use {this.state.link} here
    ...
}
 类似资料:
  • 问题内容: 我对React有一点问题。我无法使用for循环创建嵌套组件。我想做的是创建一个表的9个单元格,然后创建3行,每行3个单元格,然后将3行安装在一起并创建9x9的电路板。 假设我想得到类似的东西,但是使用循环 } 我搜索了几个小时的其他问题,我认为我的代码几乎是正确的,但没有呈现我想要的内容。我只会得到一张白纸。 这是我的代码: 我总是在屏幕上看到这样的东西: 我想澄清一下,我确定该组件(

  • 问题内容: 几乎在每个ReactJS教程中,甚至在用于处理输入更改的官方文档中,都建议使用onChange。我们使用状态作为值,并通过onChange对其进行更改。这会在每个按键中触发渲染。所以, 渲染真的那么便宜吗? 输入值不保存在DOM中吗?因此DOM和VirtualDOM之间没有区别,因此尽管渲染发生了什么变化?(可能是错误的假设)。 出于娱乐和学习目的,我尝试了以下方法: 使用自定义函数和

  • 但后来我看到了另一种创建组件的方法。 嗯,我现在很困惑。在React中有什么标准的做事方式吗?

  • 问题内容: 我正在关注一个React教程,这是作者提供的用于创建基本React组件的示例代码: 他声称这是ES6。 但是后来我看到了另一种创建组件的方法。 嗯,我现在很困惑。是否有任何标准的反应方式? 问题答案: 在React中,您可以创建所谓的有状态和无状态功能组件。无状态组件是不需要维护状态的简单可重用组件。这是一个简短的演示(http://codepen.io/PiotrBerebecki/

  • 问题内容: 我一直在到处寻找有关制作组件的帮助,以帮助管理从React到我已设置的端点的文件上传。 我尝试了许多选项,包括集成filedropjs。我决定反对,因为我无法控制它在DOM中设置的元素 这是我到目前为止的内容: 如果有人可以将我指向正确的方向,我会发送一些虚拟的拥抱。我已经对此进行了广泛的研究。我觉得我已经接近了,但还没到那儿。 谢谢! 问题答案: 我也为此工作了一段时间。这是我想出的

  • 问题内容: 我已经在React文档中读到,“如果”类型语句不能在JSX代码中使用,由于JSX呈现到javascript中的方式,它无法正常工作。 但是,有什么理由为什么实现“ if”组件不是一个好主意?从我的初始测试来看,它似乎工作正常,并且使我想知道为什么不经常这样做? 我的部分意图是让反应开发尽可能地基于标记,并且使用尽可能少的javascript。在我看来,这种方法更像是一种“数据驱动”方法