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


 < a data-pin-do = {'embedPin'} href = {'https://www.pinterest.com/ pin / 12345'} />



 我的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;答案 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>