【发布时间】:2019-07-05 20:31:42
【问题描述】:
我有一个相对简单的问题是尝试将内联脚本添加到 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,我不想分享。
【问题讨论】:
-
是否有特定的动机通过 React 加载而不是将其包含在基本页面 HTML 中?即使这确实有效,这也意味着您每次安装组件时都会重新插入脚本。
-
是这样吗?我认为 DOM diffing 会使情况并非如此,但我承认这将取决于
DocumentTitle的实现。 -
正确的@loganfsmyth,如果下一个状态也有脚本,React 不会在重新渲染时重新加载脚本。
标签: javascript reactjs ecmascript-6