2015-02-17 4 views
3

Попытка достичь следующего:Reactjs - создать фабрику, передавая реквизита в компонент

if(typeof window === 'undefined'){ 
    return React.renderToString(React.createFactory(AppComponent)()); 
} 
React.render(<AppComponent component={component} />, document.body); 

Как именно я могу передать в component реквизита к компоненту, когда она Претворяется методом createFactory?

EDIT:

Понял работает:

renderApp: function(component){ 
    if(typeof window === 'undefined'){ 
     var appComponentFactory = React.createFactory(AppComponent); 
     return React.renderToString(appComponentFactory({ 
      component: component 
     })); 
    } 
    React.render(<AppComponent component={component} />, document.body); 
} 
+0

Как вы можете создать заводскую составляющую, используя себя? – Pogrindis

+0

Iv'e удалил ответ, так как чем больше я смотрю на ваш вопрос, тем больше я смущен. Не могли бы вы еще раз подвести итоги? как вы ожидаете, что вы можете определить что-то как само? – Pogrindis

+0

может быть что-то вроде этого? http://facebook.github.io/react/blog/2014/10/14/introducing-react-elements.html#react-without-jsx – Dhiraj

ответ

5

Если вы уже transpiling JSX для React.render() вызова, вам не нужно прыгать через обручи с заводов ...

renderApp: function(component){ 
    var app = <AppComponent component={component}/> 
    if (typeof window === 'undefined') { 
     return React.renderToString(app); 
    } 
    React.render(app, document.body); 
} 

... так как это просто сахар для:

var app = React.createElement(AppComponent, {component: component}) 

Это не может применяться, но если ваш AppComponent ничего не делает, но отдавая component подпирать это дано, вы также можете просто визуализировать компонент непосредственно:

renderApp: function(Component) { 
    var app = <Component/> 
    if (typeof window === 'undefined') { 
     return React.renderToString(app); 
    } 
    React.render(app, document.body); 
} 

... показывая desugaring еще раз:

var app = React.createElement(Component) 
Смежные вопросы