2015-05-01 3 views
1

Я использую react 0.13.1 в приложении rails 4.2.1 с react-rails и browserify-rails. Я не делаю ни одного приложения с одной страницей, но вместо этого добавляю компоненты react на отображаемые страницы и используя систему маршрутизации rails.Инициализаторы в React.js?

Когда я загружаю страницу, я хочу инициализировать несколько вещей, но я не уверен, куда должен идти этот код. У react есть функция инициализатора, которую она всегда вызывает перед рендерингом компонентов или всегда визуализирует первый компонент, чтобы я мог просто добавить код инициализации к первому компоненту?

Как бы я поместил react код инициализатора в моей многостраничной странице rails приложение? (Должен работать для клиента или сервера оказанной react код)

Примечание: Предположим, что используется только react и обычная javascript.

Редактировать: не спрашивать об инициализации каждого компонента, а скорее инициализирует код после загрузки страницы, но до того, как реакция начнет проходить и рендеринг любых компонентов.

ответ

0

Да, все это есть в документации React. Каждый компонент имеет getInitialState, который вызывается, когда объект сначала запрашивается, тогда у него есть oncompentdidmount и другое, когда компонент отключается. Это код JavaScript, поэтому код инициализации может быть выполнен внутри каждого компонента или просто объявлен глобально до или после выполнения кода React.

У меня есть аналогичная настройка с Django, где я использую Django для его сильных сторон. Маршрутизация, сеансы, аутентификация, ect API остатка ... и Django отображает шаблон баров, который загружает пользовательский интерфейс React. Этот процесс, похоже, работает очень хорошо, он значительно ускорил мой сайт с того места, где он был раньше, и пользовательский интерфейс является удивительным.

Так что в одном конкретном случае с моим приложением django мне нужно, чтобы определенные данные были инициализированы до того, как компоненты React попытаются сделать сами. поэтому я переношу код инициализации в функцию, вызываемую при загрузке страницы, а затем в качестве обратного вызова после завершения этой функции я вызываю другую функцию, которая фактически добавляет мои компоненты реакции на страницу. Оттуда каждый компонент имеет свою собственную инициализацию, о которой вы говорили, что вас сейчас не интересует, но именно так я справлялся с ситуацией.

+0

Спасибо за ответ, но это не совсем то, что я ищу. Я отредактировал свой вопрос, надеюсь, он уточнит мой вопрос. – Derek

+0

Хорошо, без проблем, я обновил свой ответ с новым абзацем, я думаю, что это касается того, что вы просите. – PythonIsGreat

3

Точка входа для инициализации React - это вызов React.render(), поэтому перед этим вызовом вы должны выполнить любую инициализацию. Если инициализация является асинхронной, просто вызовите React.render() в обратном вызове.

Также существует метод componentWillMount для каждого компонента, который может использоваться для инициализации, специфичной для компонента.

+0

Спасибо за ответ, но это не совсем то, что я ищу. Я отредактировал свой вопрос, надеюсь, он уточнит мой вопрос. – Derek

+0

Я ответил как на то, как вы делаете инициализацию до того, как начнется React, и инициализация компонента. Как я уже сказал, делайте это на загрузке страницы, прежде чем вы вызываете 'React.render()'. –

Смежные вопросы