状況
React/Reduxのアプリケーションでクリップボードにコピーするプログラムを書いているのですが、以下のようなエラーが出ます。
bundle.js:38118 Uncaught TypeError: Cannot read property 'props' of null at copyToClipboard (VM71688 bundle.js:38118)
render methodの中では問題なくpropsをとって来れているのですが、なぜかcopyToClipboardの中ではとって来れません。。どなたか理由がわかる方いますでしょうか?? m(_ _)m
コード
jsx
1import React, {Component} from 'react'; 2import {connect} from 'react-redux'; 3import Header from '../components/header'; 4import hljs from 'highlightjs'; 5import remark from 'remark'; 6import reactRenderer from 'remark-react'; 7import githubSchema from 'hast-util-sanitize/lib/github.json'; 8 9class TestDetail extends Component { 10 copyToClipboard () { 11 var textField = document.createElement('textarea') 12 const markdownString = '```js\n' + this.props.test.code + '\n```'; 13 textField.innerText = markdownString 14 document.body.appendChild(textField) 15 textField.select() 16 document.execCommand('copy') 17 textField.remove() 18 } 19 codeParser() { 20 hljs.initHighlightingOnLoad(); 21 22 const schema = Object.assign({}, githubSchema, {attributes: Object.assign({}, githubSchema.attributes, { 23 code: [ 24 ...(githubSchema.attributes.code || []), 25 'className' 26 ] 27 })}); 28 29 const markdownString = '```js\n' + this.props.test.code + '\n```'; 30 31 return (<div>{remark().use(reactRenderer, {sanitize: schema}).processSync(markdownString).contents}</div>) 32 } 33 render() { 34 const test = this.props.test; 35 36 if (!test) { 37 return ('') 38 } 39 40 return (<div className="test"> 41 <div className="test-bottom"> 42 <div className="test-source"> 43 <span onClick={this.copyToClipboard}>Copy</span> 44 </div> 45 </div> 46 </div>) 47 } 48} 49 50function mapStateToProps(state) { 51 return {tests: state.test}; 52} 53 54export default connect(mapStateToProps)(TestDetail) 55
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/01 01:39