gpt4 book ai didi

javascript - 将脚本标签添加到 React/JSX

转载 作者:IT老高 更新时间:2023-10-28 13:15:50 28 4
gpt4 key购买 nike

我有一个相对简单的问题,即尝试将内联脚本添加到 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';)

这可能是您从示例中安装包 reactreact-document-title 的方式,并且有一个 Typekit package available on npm .


更新:

现在我们有了钩子(Hook),更好的方法可能是像这样使用 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);
}
}, []);

这使它成为自定义钩子(Hook)的绝佳候选者(例如: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
}

关于javascript - 将脚本标签添加到 React/JSX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34424845/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com