在React中重新运行html <script>

时间:2017-06-05 20:09:05

标签: javascript jquery html reactjs react-redux

我在React中创建了一个组件,它从API调用中获取了Pinterest Pins。 API调用返回并更新一个列表,然后render()将填充标签,这些标签应该由Pinterest网站的脚本转换为实际图像。这样的事情:

&#xA;&#xA;
 &lt; a data-pin-do = {'embedPin'} href = {'https://www.pinterest.com/ pin / 12345'} /&gt;&#xA;  
&#xA;&#xA;

我的html文件包含这个脚本,我假设它通过HTML代码运行并转换标签可查看的内容。

&#xA;&#xA;
 &lt; script async defer src =“// assets.pinterest.com/js/pinit.js"></script> ;&#xA;  
&#xA;&#xA;

然而,我遇到的问题是脚本只在网页最初加载时运行,然后再也不会运行。由于我在API调用中添加了更多标签,然后通过道具更新列表,这意味着我留下了一堆标签,这些标签在调用返回时无法转换。

&#xA;&#xA;

我检查了React控制台&amp; html并且可以确认标签在那里,只是动态转换的标签不会显示为引脚。

&#xA;&#xA;

我已经尝试过使用jquery和document.appendChild()在componentDidUpdate()中添加/获取脚本,但它似乎没有用。有人知道如何解决这个问题吗?

&#xA;

2 个答案:

答案 0 :(得分:0)

如果查看devtools,您应该看到当html页面加载此脚本时,它只是向脚本src(http://assets.pinterest.com/js/pinit.js)发出GET请求。因此,每次需要重新运行脚本时,您都应该能够通过对该URL发出简单的http GET请求来重新创建该行为。

答案 1 :(得分:0)

尝试使用:脚本中的do-while:

var repeat = 0
Do { 
// Your code goes here
repeat = repeat + 1
} while(repeat <= 10)

注意:在您希望脚本重复的时间内替换10

如果您不想为此添加规则(因此只在...时运行),请执行以下操作:

var repeat = 'yes'
Do { 
// Your code goes here
} while(repeat == 'yes')

现在您的代码只会在重复等于

时运行

行动中

<a href="javascript:repeat = 'no'">Stop repeating</a>
<a href="javascript:repeat = 'yes'">Start repeating</a>
<script>
var repeat = 'yes'
Do { 
// Your code goes here
If(var1 == var2) { repeat = 'no' }
} while(repeat == 'yes')
</script>