Использование RegExp
для идентификации всех {}
наборов. Затем замените значение значением состояния и обновите строку. Наконец, используйте dangerouslysetinnerhtml , чтобы вставить HTML-строку в ответный узел. См. Пример.
Надеюсь, это поможет!
class App extends React.Component{
constructor(props) {
super(props)
this.state = {
username: 'Pranesh',
userId: 124,
}
}
render(){
var template = '<div>Hello {username}. Your user id is {userId}.</div>';
var r = template.match(/\{[\w]+\}/g);
r && r.forEach((state) => {
var regex = new RegExp(state, 'g')
var stateItem = state.split(/{|}/g)[1]
template = template.replace(regex, this.state[stateItem])
})
return <div dangerouslySetInnerHTML={{__html: template}}/>
}
}
ReactDOM.render(<App/>, document.getElementById('app'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>
Есть ли какой-либо причине вы не просто использовать JSX вместо строки? 'var template =
У меня есть HTML в отдельных файлах, рабочая политика, дизайнеры не могут изменять файлы js, только файлы HTML – chulian
вопрос уже задан и [ответили] (http://stackoverflow.com/a/33342686/7049654) –