Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.02.2015, 22:46
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

React'а тред
Думаю, можно создать отдельный тред для вопросов\трепни для этого чуда.

Мой первый вопрос - это "Как передавать состояние (или просто данные) компонентам React при серверной отрисовке?"

У меня на сайте 2 запроса делается постоянно - это список страниц (меню) и настройки сайта

пока решил сделать так, на примере страниц (это маршрут express):
var detectNotFound = function (state) {
  var is404 = function (route) { return route.name == '404'; };
  var isNotFound = state.routes.filter(is404).length > 0;
  return isNotFound;
};

var getMarkup = function (req, data) {
    return new Promise(function (res, rej) {

      var location = req.url;
      Router.run(routes, location, function (Handler, state) {
        var isNotFound = detectNotFound(state);
        if (isNotFound) {
          rej();
        } else {
          var handler = React.createElement(Handler, {flux: flux, data: data});
          var markup = React.renderToString(handler);
          res(markup);
        }
      });

    });
};

module.exports = function reactRoute_middleware (req, res, next) {

  Promise

  // Initial data
  .resolve({})

  .then(function (data) {

    Page.findAll().then(function (pages) {

      data.pages = _.map(pages, function (page) {
        return { title: page.title, slug: page.slug };
      });

      return Promise.resolve(data);

    })

    .then(function (data) {
      getMarkup(req, data).then(function (markup) {
          res.render('index', { title: 'Сайтуха', content: markup, data: data });
      }, next);
    })

    .catch(next);

  });
};

ну и в шаблоне это дело вывожу:
Код:
extends layout

block content
  div#content!= content

block scripts

  - var strdata = JSON.stringify(data)
  script window.initialData = !{strdata};
ну а дальше подхватываю window.initialData в компоненты\Flux

хотелось бы сделать это без глобальной переменной
Ответить с цитированием
  #2 (permalink)  
Старый 23.02.2015, 00:03
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от melky
React'а тред
Меня уже не первый раз посещает мысль по веб-паку создать

Сообщение от melky
хотелось бы сделать это без глобальной переменной
запихни в какой-нибудь глобальный объект:
React.__initial = {};
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #3 (permalink)  
Старый 23.02.2015, 09:07
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

melky,
продолжая этот пост Обсуждений тред
Это понятно, но, получается, мне так и придётся передавать дополнительный аргумент-счётчик? Кстати, зачем ему нужен key если без него он и так нормально работал(хоть и выводил преды)?
Ответить с цитированием
  #4 (permalink)  
Старый 23.02.2015, 11:40
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Safort Посмотреть сообщение
melky,
продолжая этот пост Обсуждений тред
Это понятно, но, получается, мне так и придётся передавать дополнительный аргумент-счётчик? Кстати, зачем ему нужен key если без него он и так нормально работал(хоть и выводил преды)?
угумс, для использования номера лучше передать его как отдельный prop

key нужен для оптимизации скорости отрисовки списков (без них он бы все удалил из dom и записал заново)
Ответить с цитированием
  #5 (permalink)  
Старый 23.02.2015, 13:06
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

melky,
спасибище за ответы)
Ответить с цитированием
  #6 (permalink)  
Старый 26.02.2015, 00:26
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

React v0.13 RC
Ответить с цитированием
  #7 (permalink)  
Старый 26.02.2015, 11:21
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Safort Посмотреть сообщение
React v0.13 RC
наверное, я пессимист)
Цитата:
Мы уже немного говорили о грядущих изменениях. Основное — это конечно же отбрасывание существующего кода вашего проекта как легаси. Подробнее в нашем анонсе беты. Мы очень взволнованы этим событием! Себастьян также написал сегодня утром о некоторых изменениях с API React. Мы надеемся, что изменения, над которыми мы работали, улучшат производительность и ощущения от переписывания ОДНОГО И ТОГОЖЕ САЙТА ЦУКО СТРАДАЙ ОТ СВОЕГО BLEEDING EDGE НУБАС.
Ответить с цитированием
  #8 (permalink)  
Старый 26.02.2015, 11:57
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

melky,
Зачем ты переписываешь один и тот же проект? Пиши себе на v0.12.2 и дальше. Когда начнешь новый проект используй v0.13.1 т.к. они уже к тому времени пофиксят самые страшные баги, из-за которых ты бы парился долго.

У меня года три было две версии админки, одна устаревшая, другая супер современная. Немного парило, но вполне терпимо.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #9 (permalink)  
Старый 26.02.2015, 12:01
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Safort
React v0.13 RC
semver на них не хватает
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #10 (permalink)  
Старый 27.02.2015, 09:06
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Хочу вступить в ваши ряды С самим реактом разобрался вроде как, но подскажите, какие полезные аддоны стоит глянуть.
__________________
kobezzza
code monkey
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смишных картинок тред megaupload Оффтопик 3447 03.07.2023 09:47
Обсуждений тред cyber Оффтопик 2130 03.10.2018 08:10
Webpack'а тред nerv_ Сборка проекта, утилиты 58 07.05.2016 13:46
Github Atom'а тред melky Оффтопик 16 01.04.2015 07:44
Смишных видео с намеком тред godofjavascript Оффтопик 4 30.12.2012 23:50