В Vue у вас может быть что-то вроде.
<!-- index.php -->
<div id="app">
<section>
<main>
<h1>Main</h1>
<some-component></some-component>
</main>
<aside>
<h2>Side</h2>
<another-component></another-component>
</aside>
</section>
</div>
<script>
Vue.component('some-component', { template: '<div>hello - {{ this.$parent.test }}</div>' });
Vue.component('another-component', { template: '<div>world - {{ this.$parent.test }}</div>' });
new Vue({el: '#app', data: () => ({test: 123})});
</script>
, которое будет рендерить все зарегистрированные компоненты, и вы получите что-то вроде
<div id="app">
<section>
<main>
<h1>Main</h1>
<div>hello - 123</div>
</main>
<aside>
<h2>Side</h2>
<div>world - 123</div>
</aside>
</section>
</div>
Как можноТо же самое можно сделать с помощью React?
Я пробовал глупые вещи, такие как
class App extends Component {
render() {
return <div>{this.props.kids}</div>
}
}
if (document.getElementById('app')) {
ReactDOM.render(<App kids={document.getElementById('app').innerHTML)} />, document.getElementById('app'));
}
Общая цель - иметь возможность иметь нормальные шаблоны HTML, а затем разбрасывать различные реакции.компоненты повсюду, где это необходимо.
В идеале он должен содержаться в одном компоненте, не похожем на рендер, который может предоставлять глобальные данные, используя контекстный интерфейс API.