需要在react中渲染HTML标签,Alipay的。

"<form name="punchout_form" method="post" action="https://openapi.alipay.com/ga...;method=alipay.trade.page.pay&sign=MXDuC1IJfUEbVgD6qw3IWulQFVAhs7O%2FnPuA1%2BxLEDep7OXx3nu%2Bnp6SGLTHAVpiEpw%2FtuTkoQ4Lo9n2oVMfvoqlYtq3ZqWAJpxZ4nTYSbrn9sX1iyIaUtmBfSYfcBQKrz5sIPGiHUp6evWBw5pWRJPZRvMCxO3QcMa4DfXYZnc3NCy4C%2FLDquENyqvIjvBTsIKyzY7XVkivaEuv%2B9rusG0%2FW4VFxyaxEOqeyakOQIyahiXgnt5kZ43XVTD3I%2FxyFD%2BLUIUfNpjhQoG4ccU4jsJOUEQ3zmd%2BtJ%2FIHhfi0eoAqSkehwqR7WvxIP%2B9efIskcNcbLyvtmIIOq2LimWD4Q%3D%3D&return_url=http%3A%2F%2F59.110.13.76%2Faccountapi%2Fsuccess&notify_url=http%3A%2F%2F59.110.13.76%2Faccountapi%2Faccount%2FalipayCallback&version=1.0&app_id=2019102268527997&sign_type=RSA2&timestamp=2019-11-20+15%3A38%3A14&alipay_sdk=alipay-sdk-java-4.8.56.ALL&format=json">n<input type="hidden" name="biz_content" value="{&quot;out_trade_no&quot;:&quot;2019112000000000006058&quot;,&quot;product_code&quot;:&quot;FAST_INSTANT_TRADE_PAY&quot;,&quot;total_amount&quot;:0.01,&quot;subject&quot;:&quot;gamecoin&quot; }">n<input type="submit" value="立即支付" style="display:none" >n</form>n<script>document.forms[0].submit();</script>"

直接用HTML加载是可以打开的,用react加载例如dangerouslySetInnerHTML方法就无法渲染。

阅读 3.1k
2 个回答

问题在于需要执行代码后边的script标签

或许分成form的部分和 script部分, form的部分直接渲染,script用正则拿到内容 在componentDidMount 执行下,react hook 的话就在useEffect执行

str.replace(/<script.*?>([\s\S]+?)<\/script>/img,function(_,js){    //正则匹配出script中的内容
                      sctiptContent = js //sctiptContent就是script内容
       });
       
useEffect(() => {
    let str ='document.forms[0].submit();'
    eval('' + str + '')
  }, [])
  
componentDidMount() {
 let str ='document.forms[0].submit();'
    if(str) {
     eval('' + str + '')
    }
   
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题