基本上我想從外部腳本向反應組件添加靜態HTML。將外部HTML轉換爲反應組件不起作用
所以我節省的this
到窗口變量參考如下:
let { PropTypes } = React;
export default class Body extends React.Component {
constructor(){
super();
let frmTrgt={};
frmTrgt.refff=this;
console.log("tthis: ",this);
window.bdyRefrence=frmTrgt;
}
static defaultProps = {
items: []
};
static propTypes = {
items: PropTypes.array.isRequired
};
render() {
return (
<div className={styles.body}>
<h1 className={styles.header}>React Seed</h1>
<p>This is an example seed app, powered by React, ES6 & webpack.</p>
<p>Here is some example data:</p>
<Menu items={this.props.items} />
<div>
<h1>Dynamic Content</h1>
<div id="myDynamicContent"></div>
</div>
</div>
);
}
}
,並在index.html的(外部腳本)我的腳本標籤我做喜歡以下:
function addPHtml() {
try {
window.bdyRefrence.refff.refs.formTarget.insertAdjacentHTML("<p id='mhere'>paragraph 2</p>");
}catch (err){
console.log("err: ",err);
}
}
,但是當我打電話addPHtml它給以下錯誤:
err: TypeError: Cannot read property 'insertAdjacentHTML' of undefined
at addPHtml ((index):19)
at <anonymous>:1:1
「窗口」的行爲在不同的做出反應,您可以通過「componentDidMo訪問unt()「方法,但不在構造函數中。你必須渲染它,然後一旦組件已被渲染,使用窗口對象 – ayxos
同樣的錯誤它甚至在移動到componentDidMount()後仍然無法工作() –
其中formTarget是ref? –