[英]How to include third party js libraries in React app
我是React的新手,正在寻找与JQuery方法等效的React,以在整个应用程序中包括分析。
通常,我会:
在html页面上包含第3方库。 放在index.html页面上很容易,但是我不知道这是否是最佳实践。
<script src="http://path/to/script/utag.js" />
然后,只要加载了库就可以与它进行交互,可以使用JQuery window.load进行验证。 这个脚本可以在纯HTML页面上正常运行,但是我试图在我的react应用程序中找到等效的最佳实践方法。 我不想引入jquery,当前我的React容器会告诉我,如果我尝试在函数中引用utag
,则未定义utag
。
<script> $(window).load(function() { utag.link({ "event_name" : "locale_select", "language" : utag_data.language, "currency" : utag_data.currency } ); }); </script>
我是React的新手,所以任何帮助都会很棒。 我知道我的项目没有使用webpack,而是使用react-scripts,并且是使用create-react-app实用程序启动的。
根据GitHub上的此问题,如果您使用的是create-react-app,则要在react脚本中使用在index.html文件中导入或创建的全局变量,则必须使用window.variable_name。
在您的情况下,这可能会起作用
import React from "react"
class App extends React.Component {
componentDidMount() {
window.utag.link({ "event_name" : "locale_select", "language" :
window.utag_data.language, "currency" : window.utag_data.currency } );
}
render() {
return <div />;
}
}
import someLibrary from 'some-library';
class App extends React.Component {
componentDidMount() {
someLibrary();
}
render() {
return <div />;
}
}
了解上面提供的组件中的语句很重要。 componentDidMount()
是一个生命周期方法,在将组件呈现到屏幕后会自动调用它。 然后在其中调用您的someLibrary()。 根据您所讨论的第三方库的类型,将决定您还需要将哪些内容传递给someLibrary()。
这就是Reactjs与第三方库交互的方式,因为通常第三方库不知道如何进入React生态系统。 他们不知道什么是render()
方法或什么是JSX。 因此,这是使第三方库与React良好配合的通用方法。
如果您使用的是create-react-app
,则使用webpack
捆绑您的JavaScript。 这是有关使用create-react-app
安装依赖项的文档 。
要包含您的库,您应该将其作为npm软件包安装,并将其导入到要使用它的文件中。 Webpack将其包含在捆绑包中,一切都应该正常工作。
因此,请使用npm install some-library
。 将其导入文件并从组件调用它:
import someLibrary from 'some-library';
class App extends React.Component {
componentDidMount() {
someLibrary();
}
render() {
return <div />;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.