当前位置: 首页 > 面试题库 >

JavaScript将脚本标签添加到React / JSX

曾瀚昂
2023-03-14
问题内容

我有一个相对简单的问题,试图将内联脚本添加到React组件中。到目前为止,我有:

'use strict';

import '../../styles/pages/people.scss';

import React, { Component } from 'react';
import DocumentTitle from 'react-document-title';

import { prefix } from '../../core/util';

export default class extends Component {
    render() {
        return (
            <DocumentTitle title="People">
                <article className={[prefix('people'), prefix('people', 'index')].join(' ')}>
                    <h1 className="tk-brandon-grotesque">People</h1>

                    <script src="https://use.typekit.net/foobar.js"></script>
                    <script dangerouslySetInnerHTML={{__html: 'try{Typekit.load({ async: true });}catch(e){}'}}></script>
                </article>
            </DocumentTitle>
        );
    }
};

我也尝试过:

<script src="https://use.typekit.net/foobar.js"></script>
<script>try{Typekit.load({ async: true });}catch(e){}</script>

两种方法似乎都无法执行所需的脚本。我想这很简单,我很想念。有人可以帮忙吗?

PS:忽略foobar,我确实有一个真正的ID正在使用,而我不想共享。


问题答案:

编辑:事情变化很快,这已经过时了-查看更新

您是否想在每次渲染此组件时一次或一次将该组件安装到DOM中时一次又一次地获取并执行脚本?

也许尝试这样的事情:

componentDidMount () {
    const script = document.createElement("script");

    script.src = "https://use.typekit.net/foobar.js";
    script.async = true;

    document.body.appendChild(script);
}

但是,这仅在要加载的脚本不能作为模块/软件包提供时才真正有用。首先,我将始终:

  • 在npm上寻找包裹
  • 在我的专案中下载并安装套件(npm install typekit
  • import我需要的包装(import Typekit from 'typekit';

这可能是您安装软件包的方式react以及react-document-title您的示例,并且npm上有一个Typekit软件包。

现在我们有了钩子,更好的方法可能是这样使用useEffect

useEffect(() => {
  const script = document.createElement('script');

  script.src = "https://use.typekit.net/foobar.js";
  script.async = true;

  document.body.appendChild(script);

  return () => {
    document.body.removeChild(script);
  }
}, []);

这使其成为自定义钩子的理想选择(例如:)hooks/useScript.js

import { useEffect } from 'react';

const useScript = url => {
  useEffect(() => {
    const script = document.createElement('script');

    script.src = url;
    script.async = true;

    document.body.appendChild(script);

    return () => {
      document.body.removeChild(script);
    }
  }, [url]);
};

export default useScript;

可以这样使用:

import useScript from 'hooks/useScript';

const MyComponent = props => {
  useScript('https://use.typekit.net/foobar.js');

  // rest of your component
}


 类似资料:
  • 问题内容: 我有一个相对简单的问题,试图将内联脚本添加到React组件。到目前为止,我有: 我也尝试过: 两种方法似乎都无法执行所需的脚本。我猜这是我所缺少的简单事情。有人可以帮忙吗? PS:忽略foobar,我有一个真正的ID正在使用中,而我不想共享。 问题答案: 编辑:事情变化很快,这已经过时了-查看更新 您是否想在每次渲染此组件时一次或一次将该组件安装到DOM中时一次又一次地获取并执行脚本?

  • 我有一个比较简单的问题,就是尝试将内联脚本添加到React组件中。我目前所掌握的: 我还尝试过: 这两种方法似乎都无法执行所需的脚本。我想我错过的是一件简单的事。有人能帮忙吗? PS:忽略foobar,我有一个真实的id实际上在使用,我不想分享。

  • 文本标签通常用于帮助记录仪表板,例如添加仪表板标题、URL 链接。 添加一个文本标签 在仪表板选项卡中,点击 “添加文本”。 将其放在仪表板上。 输入标题。 属性 文本标签的可用属性: 选项 描述 位置 自定义标签的位置。 大小 自定义标签的大小。 标题 输入标签的标题。 对齐方式 指定标签标题的文本对齐方式。 字体 设置标签标题的字体样式。 粗体 将粗体样式应用于标签标题。 斜体 将斜体样式应用

  • 文本标签通常用于帮助记录仪表板,例如添加仪表板标题、URL 链接。 添加一个文本标签 在仪表板选项卡中,点击 。 将其放在仪表板上。 输入标题。 属性 文本标签的可用属性: 选项 描述 位置 自定义标签的位置。 大小 自定义标签的大小。 标题 输入标签的标题。 对齐方式 指定标签标题的文本对齐方式。 字体 设置标签标题的字体样式。 粗体 将粗体样式应用于标签标题。 斜体 将斜体样式应用于标签标题。

  • 文本标签通常用于帮助记录仪表板,例如添加仪表板标题、URL 链接。 添加一个文本标签 在仪表板选项卡中,点击 “添加文本”。 将其放在仪表板上。 输入标题。 属性 文本标签的可用属性: 选项 描述 位置 自定义标签的位置。 大小 自定义标签的大小。 标题 输入标签的标题。 对齐方式 指定标签标题的文本对齐方式。 字体 设置标签标题的字体样式。 粗体 将粗体样式应用于标签标题。 斜体 将斜体样式应用

  • 问题内容: 我想在Linux PATH中添加一个小脚本,因此不必在实际放置在磁盘上的地方实际运行它。 该脚本非常简单,它是关于通过代理赋予apt-get访问权限的,我使它像这样: 然后,我将其保存为apt-proxy.sh,将其设置为+ x(chmod),当我位于该文件所在的目录中时,一切正常。 我的问题是:如何将此 apt-proxy 添加到 PATH, 以便实际上可以将其称为真正的apt-ge