我有一个返回字符串的代码,但由于它在渲染时需要附带一个HTML标记,在本例中为span。
我想在多个地方使用此代码,包括占位符和标签,但是使用span,我相信这是不可能的。
以下是有问题的代码,会对如何解决问题提出一些看法。
let LocalizedString = React.createClass({
render: function() {
if (!this.getKey(loadLang, this.props.xlKey)) {
return <span>{this.props.xlKey + ' untranslated in ' + userLang + ' JSON'}</span>;
} else {
return <span>{this.getKey(loadLang, this.props.xlKey)}</span>;
}
},
getKey: function(obj, str) {
str = str.replace(/\[(\w+)\]/g, '.$1'); // let's convert indexes to properties
str = str.replace(/^\./, ''); // gets rid of leading dot
let a = str.split('.');
for (let i = 0, n = a.length; i < n; i++) {
let key = a[i];
if (key in obj) {
obj = obj[key];
} else {
return null;
}
}
return obj;
},
});
module.exports = LocalizedString;
在另一个调用LocalizedString的文件中,我有这个,但是使占位符返回未定义...
<TextField alert={alerts.username} onChange={this._onChangeUsername} placeholder={<LocalizedString xlKey='pages.signin.general.username'/>} ref="username" value={this.props.username}/>
底线非常多,我可以让渲染返回一个没有任何标签的字符串,或者让占位符接受并丢弃span标签吗?
问候。
答案 0 :(得分:1)
您必须根据要求使用function
而不是React Component
。
必须绑定React Component的render
方法才能返回single wrapped markup
或基本上Virtual DOM
。