2016-04-20 1 views
-1

Я пишу приложение с реагировать и выполнять на стороне сервера визуализации я сделал следующее:Реакция на стороне сервера es6 не требует фабрики?

var Component = require('myComponent'); 
var ComponentFactory = React.createFactory(Component); 

/* GET home page. */ 
router.get('/', function (req, res, next) { 
    res.render('index', { 
     react: ReactDom.renderToString(ComponentFactory()), 
    }); 
}); 

Теперь я переписывать приложение, но переключился большинство JavaScript для ES6, но когда я попытался создать завод с компонентом, он не будет отображаться в браузере, вместо этого я должен был сделать следующее:

var router = express.Router(); 

/* GET home page. */ 
router.get('/', function(req, res, next) { 
    res.render('index', { 
     reacthtml: ReactDom.renderToString(<InfoBoxes />)***here*** 
    }); 
}); 

Я должен был просто ввести компонент в синтаксисе JSX. Является ли этот ES6 зависимым или есть еще одна причина, почему это может произойти?

+1

Здесь недостаточно информации, чтобы сказать, почему это происходит. Но у вас есть еще одна разница между двумя примерами: 'реакция:' vs 'reacthtml:'. Я также задаюсь вопросом, был ли 'myComponent' переведен из синтаксиса модуля ES6, и если да, то как и если вам нужно выполнить' require ('myComponent'). Default'. – JMM

+0

@JMM 'Я переписываю приложение, но переключился на большинство ...' Обычно это означает, что приложение не было написано на ES6, поэтому я переключаюсь. Поэтому myComponent не был получен из ES6 –

+0

Если вам нужна помощь, вы должны просто объяснить ситуацию. «переключил большую часть javascript на ES6», прошедшее время говорит о сильной вероятности того, что myComponent переводится с ES6. Единственный способ узнать, что это не так, - это ваш комментарий, который подразумевает, что это заключение логически вытекает из вопроса, чего нет. – JMM

ответ

1

JSX так:

<InfoBoxes /> 

фактически transpiled в этом:

React.createElement(InfoBoxes) 

И createFactory выглядит (примерно), как это:

function createFactory(type) { 
    return React.createElement.bind(null, type); 
} 

Таким образом, они в конечном счете, эквивалентны; вам не нужно использовать фабрики, если вы используете jsx.

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