Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有可能有一个';静态';可在每页全局使用的react组件_Javascript_Reactjs_React Jsx - Fatal编程技术网

Javascript 有没有可能有一个';静态';可在每页全局使用的react组件

Javascript 有没有可能有一个';静态';可在每页全局使用的react组件,javascript,reactjs,react-jsx,Javascript,Reactjs,React Jsx,我的情况是,我需要一个react组件,该组件可以在每个页面中使用(无需替换当前页面并在页面上覆盖此组件)。我知道我可以在每个页面的render()中包含这个组件,但是我有1000多个页面,这不是很容易扩展的。我在想,是否有可能拥有一个每个页面都可以访问的“静态”react组件。我是一个新手,没有在网上找到这样的例子。非常感谢 是的,这是完全可能的。虽然有几个选项,但正确的选项在很大程度上取决于您的应用程序。如果没有任何代码或示例,很难说出您需要什么,但这里有一些建议: 您需要做的是首先将该组件

我的情况是,我需要一个react组件,该组件可以在每个页面中使用(无需替换当前页面并在页面上覆盖此组件)。我知道我可以在每个页面的render()中包含这个组件,但是我有1000多个页面,这不是很容易扩展的。我在想,是否有可能拥有一个每个页面都可以访问的“静态”react组件。我是一个新手,没有在网上找到这样的例子。非常感谢

是的,这是完全可能的。虽然有几个选项,但正确的选项在很大程度上取决于您的应用程序。如果没有任何代码或示例,很难说出您需要什么,但这里有一些建议:


您需要做的是首先将该组件导入到要加载它的每个页面中。让我们假设这个全局组件位于一个名为
GlobalComponent.js的单独文件中,并且位于同一目录中

从导入GlobalComponent./GlobalComponent
(请注意,您可以从文件名中省略
.js

然后在渲染函数中,您可以这样编写:

render() {
  return (
    ...

    <GlobalComponent />

    ...
  );
}
React.createElement(GlobalComponent, {className: 'style1'}, 'Hello world!')
如果不使用JSX,可以创建如下元素:

render() {
  return (
    ...

    <GlobalComponent />

    ...
  );
}
React.createElement(GlobalComponent, {className: 'style1'}, 'Hello world!')
其中第二个参数是道具,第三个参数是儿童

这两种方法都会导致:

<GlobalComponent class="style1">Hello world!</GlobalComponent>
你好,世界!

如果您不想对所有文件执行此操作,那么您也可以在根组件之前粘贴该html

例如:

<body>
<div class="global-component"></div>
<div id="main">
  //react stuff goes here. "global-component" is on all pages.
</div>

//所有东西都在这里。“全局组件”在所有页面上。

ReactDOM.render(reactElement,document.getElementById('main))


另一个选项与第一个选项类似,但可以将另一个React组件传递给顶级父React元素,并在需要时渲染它。您可以继续传递它,并在需要的地方实现它。这取决于你的申请



如果您使用的是react路由器,您也可以执行类似@The建议的操作。

静态react组件有什么意义?只需将HTML保存到一个全局变量,然后使用它。将它放入根组件中。如果你没有,就创建一个。稍微让人困惑的是,你不想更新1000多个页面,但你建议一个静态组件,每个页面都可以访问,这意味着无论如何都要更新所有页面。我已经在下面提交了一个答案和一些建议。我希望这能有所帮助,但除非您提供一些代码或具体示例,否则很难说您真正想要的是什么。@MatthewHerbst我不完全理解您将HMTL保存到全局变量的意思。听起来像是一个理想的情况,我希望在任何地方都重用该全局变量。然而,不清楚你所说的全球金融危机是什么意思var@KitFung我的应用程序不是单页应用程序。这是多页的原因,这是我希望我可以创建一个'静态'的组成部分,每一页使用感谢的建议。我真的很感激。但是,我的应用程序不是一个单页应用程序,因此您的第二个建议在我的情况下不起作用,第一个情况要求我编辑1000多个文件,我正试图避免这些文件。因此,该应用程序设计为可扩展。假设我试图在我的页面上有一张图片,当我点击按钮X时,这个按钮X分散在1000多页上。现在,按钮X调用这个静态函数来渲染图片。我目前正在转换为react.js,并希望用全局react组件替换此静态函数,而不建议1i将用该按钮的react组件替换该按钮(例如
)。然后使用代码编辑器(如记事本++或升华)查找并替换项目中该按钮的所有实例。这样,你就不必一个接一个地手动浏览这些文件。不过,如果你不得不编辑1000多个文件来做一个小改动,那么网站的可扩展性就不是很好,是吗?我真的会考虑一个页面的应用程序的反应-这也是一个反应的主要力量。@ GUCI程序员你有没有成功的问题?我决定插入我的组件使用中间件到每一个页面@克里斯