0
我有一個看起來像這樣的組件:創建定製的「模板」,爲ReactJS組件內使用,無需
var MyTemplatedComponent = React.createClass({
getDefaultProps: function() {
return {
discountValue: '10% off',
welcomeMessage: 'Want {{discountValue}} off your next order?'
};
},
getWelcomeMessage: function() {
return this.props.welcomeMessage.replace('{{discountValue}}', '<strong>'+this.props.discountValue+'</strong>');
},
render: function() {
return (
<p className='lead' dangerouslySetInnerHTML={{ __html: this.getWelcomeMessage() }} />
);
}
});
我們的目標是讓我們的客戶定製{{discountValue}}
,以滿足他們的喜好。然後我們想要加粗它在渲染時的折扣價值。
目前我發現正確做到這一點的唯一方法是使用dangerouslySetInnerHTML
,但感覺很危險!還有一點難看。
任何人都可以想到更好的方式來處理這個問題嗎?
如若 '{{welcomeMessage}}'在getWelcomeMessage()函數中是'{{discountValue}}'? – 2015-01-15 19:23:48
你希望他們能夠自定義歡迎信息和/或折扣價值嗎? – 2015-01-15 19:33:37
@DanielRobinson啊是的,這是一個錯字 - 修正。是的,應該可以自定義兩者。對於這個問題,假設客戶端永遠不會從{{welcomeMessage}}'中刪除'{{discountValue}}'。 – 2015-01-15 19:40:12