我試圖爲音頻播放器創建一個插件,用戶可以在其中指定自己的可選html。用戶指定的html應該具有在播放器文件中定義的某些屬性。ReactJs動態html,綁定到子類的值
在插件的那一刻,渲染方法看起來是這樣的(削減簡潔爲例):
player.js:
render(){
return (
<div id="player">
<a class="jp-play" style={this.state.playStyle} onClick={this.play}>
<i class="fa fa-play"></i>
</a>
<div class="jp-current-time">{this.state.currentTime}</div>
</div>
);
而不是在渲染插件硬編碼的HTML JSX的( player.js)方法我想要做這樣的事情:
render(){
return (
{this.props.playerHtml}
);
在父稱這就像這樣:
個app.js:
render(
<Player playerHtml={getHtml()} />
, document.getElementById("app"));
function getHtml(){
<div id="player">
<a class="jp-play" style={this.state.playStyle} onClick={this.play}>
<i class="fa fa-play"></i>
</a>
<div class="jp-current-time">{this.state.currentTime}</div>
</div>
}
因此,用戶可以指定插件自己的HTML。這種方式通過在jp-play
內傳遞fa-play
圖標,他們可以通過他們想要的任何東西。
的問題是onClick事件處理程序,並通過各州通過將不再作爲this.state.playStyle
正常工作和this.state.currentTime
將指向app.js文件,而不是player.js。
我問題是,我該如何讓用戶提供自己的HTML這樣的,但在綁定我player.js
的HTML的用戶通行證價值和功能價值和事件?我可以通過修改dom來輕鬆完成,但我不認爲這是反應方式。
完美,謝謝,這裏的關鍵不調用'getHtml()'的時候了。它不是指定html btw的實際最終用戶。這是任何使用這個播放器插件的開發者,所以不會有任何安全問題,比如XSS。我可能解釋得很差。 –