【问题标题】:Render multpile ReactJS components in Laravel without using ReactJS Router在 Laravel 中渲染多个 ReactJS 组件而不使用 ReactJS 路由器
【发布时间】:2020-02-24 14:18:02
【问题描述】:

我想在新窗口选项卡中呈现多个 ReactJS 组件。我想使用 PHP Laravel 路由器来渲染多个组件。

我试过了:

1. 在视图文件中我有 <div id="root"></div> 在 index.js 文件中我有

ReactDOM.render(<App ></App>, document.getElementById('root'));

我使用了两个具有不同 div ID 和组件的 ReactDOM.render,它给了我以下错误:

目标容器不是 DOM 元素

我搜索了这个错误,但找不到解决方案。

2. 我在没有任何路由器的情况下尝试了以下代码: 我在 onclick 事件动作调度的 reducer(Redux) JS 文件中编写了以下代码。

import secondComponent from '../PathToFile';
.
.
var newWindow= window.open('', '', 'width=600,height=400,left=200,top=200');
var element =  document.createElement('div');
element.innerHTML = <secondComponent/>;
newWindow.document.body.appendChild(element);

但结果是:

[对象对象]

在新窗口标签中。我错过了什么吗?

请指导我。我哪里做错了?

【问题讨论】:

    标签: javascript html reactjs laravel


    【解决方案1】:

    我想我不太明白你的问题,但我认为你应该添加更多的根元素,这是可能的,我的意思是:

    <div id="root"></div>
    <div id="that-component-root"></div>
    

    并在您的代码上基于您的 PHP 路由导入每个捆绑的文件。每个捆绑的文件都应该注入到它们自己的根元素中:

    ReactDOM.render(<App />, document.getElementById('root'));
    

    ReactDOM.render(<ThatComponentRoot />, document.getElementById('root'));
    

    等等

    但我认为,如果我真正了解您的问题,您的项目可能会非常复杂。

    【讨论】:

    • 感谢您的回复!在您的回答中,组件 呈现在同一个 div 元素“根”?它是正确的还是它们是在两个不同的 div 上呈现的。我还尝试使用两个不同的 div id,然后将它们一个接一个地显示。如果我还为它们设置了 CSS display(none 或 block) 属性,那就没问题了。但是对于两个以上的组件,我认为这不是有用的方法,而且它变得有点复杂。你能建议解决这个问题吗?我严重卡在这个问题上!
    • @Developer,他们每个人都在注入自己的 div。
    猜你喜欢
    • 2020-05-25
    • 1970-01-01
    • 2020-03-23
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    相关资源
    最近更新 更多