我有这个组件:


 导出类Demo扩展了React.Component< DemoProps,any> {
 private foo:number;

构造函数(props:DemoProps){
超级(道具);
 }

 render(){
返回(
< html>
< head>

< script>
 //我想在此处添加内联脚本
< / script>

< / head>
< body>
< div id =“root”>
(hello world)
 < / div>
< div>
< progress id =“hot-reload-progress-bar”value =“100”max =“100”>< / progress>&# xA;< / div>
< / body>
< / html>
)
 }
}



 如何在< script>< / script>中添加内联脚本?
标签?
如果试试这个:


 getScript(){&#xA ;
 const config = JSON.stringify({
 env:process.env.NODE_ENV
});

返回'define(\“@ config \”,[],function(){'+
'return'+ config +';'+
'});'
 }


 < HEAD>
 < script> {this.getScript()}< / script>
 < / head>



 我在前端得到了这个:


 < html>< head>< script data-main =“/ js / main”src =“/ vendor / require.js”>< / script>< script> define(& “@ config& quot;,[],function(){return {& quot; env& quot;:& quot; local& quot;};}); < / script>< / head>< div>< progress id =“hot-reload-progress-bar”value =“100”max =“100”>< / progress>< / div> < body>< div id =“root”>初始主页< / div>< / body>< / html>


&#xA ; 浏览器无法解析此问题,因为我得到了:& quot;
字符而不是“
或'
答案 0 :(得分:1)
不确定这是否满足您的需求,但您可以将脚本内容放在组件方法中,然后从jsx中调用该方法
name/arity
答案 1 :(得分:1)
最好的办法是使用React的天生设施 - dangerouslySetInnerHTML
- 请参阅React docs的链接:
https://facebook.github.io/react/docs/dom-elements.html#dangerouslysetinnerhtml
首先阅读文档!然后看看我的解决方案。
我使用此功能的唯一方法是:
export class Demo extends React.Component<DemoProps, any> {
constructor(props: DemoProps) {
super(props);
}
getScript() { // return a string representing JS code
const config = JSON.stringify({
env: process.env.NODE_ENV
});
// return a plain JS object with the __html property
// set to the string
return {__html:'define("@config", [], function () {' +
' return ' + config +';' +
'});'}
}
render() {
return (
<html>
<head>
<script dangerouslySetInnerHTML={this.getScript()}/>
</head>
<body>
<div id="root">
</div>
</body>
</html>
)
}
}