add test preview component, vulnerable to xss
This commit is contained in:
		
							parent
							
								
									9dd12b7efb
								
							
						
					
					
						commit
						e8fa62aa3d
					
				
					 3 changed files with 34 additions and 5 deletions
				
			
		|  | @ -3,3 +3,5 @@ https://github.com/Hashnode/mern-starter | |||
| 
 | ||||
| * https://github.com/petehunt/react-howto | ||||
| * https://github.com/gajus/react-css-modules | ||||
| * https://github.com/jsbin/jsbin (especially look at the console) | ||||
| * Need to figure out how to solve the XSS issue, https://github.com/jsbin/jsbin/wiki/Best-practices-for-building-your-own-live-paste-bin | ||||
|  | @ -1,10 +1,31 @@ | |||
| import React from 'react'; | ||||
| import ReactDOM from 'react-dom'; | ||||
| 
 | ||||
| class Preview extends React.Component { | ||||
| 	_iframe: HTMLIFrameElement | ||||
| 	 | ||||
| 	componentDidMount() { | ||||
| 		this.renderFrameContents(); | ||||
| 	} | ||||
| 
 | ||||
| 	renderFrameContents() { | ||||
| 		let doc = ReactDOM.findDOMNode(this).contentDocument; | ||||
|     if(doc.readyState === 'complete') { | ||||
|        ReactDOM.render(this.props.children, doc.body); | ||||
|     } else { | ||||
|        setTimeout(this.renderFrameContents, 0); | ||||
|     } | ||||
| 	} | ||||
| 
 | ||||
| 	componentDidUpdate() { | ||||
| 		this.renderFrameContents(); | ||||
| 	} | ||||
| 
 | ||||
| 	componentWillUnmount() { | ||||
| 		React.unmountComponentAtNode(this.getDOMNode().contentDocument.body); | ||||
| 	} | ||||
| 
 | ||||
| 	render() { | ||||
|     return <div ref="container" className="preview-holder"></div>; | ||||
|     return <iframe sandbox="allow-same-origin"></iframe>; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,5 +1,6 @@ | |||
| import React from 'react'; | ||||
| import Editor from '../../components/Editor/Editor' | ||||
| import Preview from '../../components/Preview/Preview' | ||||
| import { bindActionCreators } from 'redux' | ||||
| import { connect } from 'react-redux' | ||||
| import * as FileActions from '../../redux/actions' | ||||
|  | @ -7,9 +8,14 @@ import * as FileActions from '../../redux/actions' | |||
| class App extends React.Component { | ||||
| 	render() { | ||||
| 		return ( | ||||
| 			<Editor  | ||||
| 				content={this.props.file.content} | ||||
| 				updateFile={this.props.updateFile}/> | ||||
| 			<div class="app"> | ||||
| 				<Editor  | ||||
| 					content={this.props.file.content} | ||||
| 					updateFile={this.props.updateFile} /> | ||||
| 				<Preview> | ||||
| 					<h1>Hello world!</h1> | ||||
| 				</Preview> | ||||
| 			</div> | ||||
| 		); | ||||
| 	} | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 catarak
						catarak