React: Script tag not working when inserted using dangerouslySetInnerHTML

后端 未结 5 1366
甜味超标
甜味超标 2020-11-28 12:29

I\'m trying to set html sent from my server to show inside a div using dangerouslySetInnerHTML property in React. I also have script tag inside it and use functions defined

5条回答
  •  囚心锁ツ
    2020-11-28 13:08

    a little extension for Dasith's answer for future views...

    I had a very similar issue but the in my case I got the HTML from the server side and it took a while (part of reporting solution where backend will render report to html)

    so what I did was very similar only that I handled the script running in the componentWillMount() function:

    import React from 'react';
    import jsreport from 'jsreport-browser-client-dist'
    import logo from './logo.svg';
    import './App.css';
    
    class App extends React.Component {
        constructor() {
            super()
            this.state = {
                report: "",
                reportScript: ""
            }
        }
    
        componentWillMount() {
            jsreport.serverUrl = 'http://localhost:5488';
            let reportRequest = {template: {shortid: 'HJH11D83ce'}}
            // let temp = "this is temp"
            jsreport.renderAsync(reportRequest)
                .then(res => {
                    let htmlResponse = res.toString()
                    let extractedScript = / tags since eval expects only code without html tags
                let scriptLines = scriptToRun.split("\n")
                scriptLines.pop()
                scriptLines.shift()
                let cleanScript = scriptLines.join("\n")
                console.log('running script ',cleanScript)
                window.eval(cleanScript)
            }
    
        }
    }
    
    export default App;
    

    hope this is helpful...

提交回复
热议问题