это простой. В терминологии MVC существует беспорядок, но я думаю, что было бы хорошо сказать, что компонент React - это не просто «View», а «View + Controller».
В качестве прямой аналогии с шаблонами двигателей функция render()
компонента является вашим шаблоном. И component.state
(который является локальным для компонента) и component.props
(аргументы, полученные от верхнего компонента), оба могут использоваться как «контекст».
Если вы хотите по-настоящему близкую аналогию с компонентом React в консервативной части JS-мира, то это Backbone's View
(который снова является контроллером view +, если мы используем оригинальную терминологию MVC, как я сказал - это беспорядок) , Концептуально это одно и то же. JSX используется в render()
вместо EJS
(или что-то еще), вот и все.
Btw, React's context
Концепция - это нечто иное. Подумайте об этом как реквизита, которые видны для всего поддерева компонентов, начиная с компонента, в котором выставлен context
.
Например, если я хотел загрузить информацию профиля (которая хранится на сервере/бэкэнд), как бы передать это в файл представления jsx переднего конца в React/jsx?
В простейшем случае, вы создаете верхний уровень Реагировать компонент, который будет загружать вещи, которые нужны на горе (componentWillMount()
), положить его в местный state
, когда вы получите ответ от сервера (this.setState(...)
) и пропускают элементы своего состояния (this.state
) до подкомпонентов в качестве реквизита (<List items={ this.state.items } />
) в своей функции render()
.
Когда state
изменен this.setState(...)
, весь компонентный поддерево будет отображаться снова. Вот как это работает. В простейшем случае.