繁体   English   中英

如何在 React/JSX 文件中添加脚本标签?

[英]How to add script tag in React/JSX file?

 private get mouseGestureSettingView() { const {selectedMenu} = this.state; return ( selectedMenu == 2 ? <script src="../../assets/js/extensions/mouse-gesture/options.js"></script> <div className={styles.settingForm}> <h3>Mouse Gesture</h3> <div className={options.opts}> <div className={options.opttitle} data-i18ninner={'newadd'}></div> <div className={options.optcontent}> <form> <input id={'addgesture'} className={options.newadd} type={'button'} value={'newgesturess'}/> </form> </div> </div> <div className={options.opts}> <div className={options.opttitle} data-i18ninner={'editgesture'}></div> <div className={options.optcontent} id={'editgesture'}></div> </div> <div style={{clear:'both'}}></div> </div> : null ); }

我想对 React 组件使用内联脚本。 我正在尝试这样。 我的方法应该是什么? 我找不到太多信息。 我想在应用程序页面上选择此组件时加载脚本。

您需要做的是代码拆分。

没有代码拆分

+ 在第一次启动时加载

import Login from './Login'
import Home from './Home'

const App = ({ user }) => (
  <Body>
    {user.loggedIn ? <Route path="/" component={Home} /> : <Redirect to="/login" />}
    <Route path="/login" component={Login} />
  </Body>
)

使用代码拆分:

import Async from 'react-code-splitting'

import Login from './Login'
const Home = () => <Async load={import('./Home')} />
const LostPassword = props => <Async load={import('./LostPassword')} componentProps={props}/>

const App = ({ user }) => (
  <Body>
    {user.loggedIn ? <Route path="/" component={Home} /> : <Redirect to="/login" />}
    <Route path="/login" component={Login} />
    <Route path="/lostpassword" component={LostPassword} />
  </Body>
)

有几种方法可以做到这一点,例如: https : //github.com/didierfranc/react-code-splitting

在给定的 js 文件的顶部使用importrequire来添加自定义脚本或自定义 css,但我同意您应该检查它以确保一切都如您所愿。

示例:

import "../../assets/js/extensions/mouse-gesture/options.js";

或者,如果您只想在使用方法时导入脚本:

myMethod() {
  require("../../assets/js/extensions/mouse-gesture/options.js");
  ...
}

你可以试试这个库: npm install --save react-script-tag

https://www.npmjs.com/package/react-script-tag

import React, { Component } from 'react';
import ScriptTag from 'react-script-tag';

class Demo extends Component {

    render() {
        return (<ScriptTag isHydrating={true} type="text/javascript" src="some_script.js" />);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM