2015-04-17 1 views
4

мне было интересно, почему с ReactJS лучше создавать заводы по каждым звонкам (в соответствии с: https://gist.github.com/sebmarkbage/d7bce729f38730399d28)ReactJS: экспорт заводов, отличный ярлык?

Не лучше экспортировать класс и заводы?

button1Class = createClass 
    render: -> ... 

button2Class = createClass 
    render: -> ... 

module.exports = { button1: button1Class, button2: button2Class} 

Тогда мне нужно сделать

Button1 = createFactory(require('buttons').button1) 
Button2 = createFactory(require('buttons').button2) 

Каждый раз, когда мне нужно их в файл (у меня есть несколько файлов, так что несколько требуется в разных файлах)?

Почему бы не экспортировать классы и фабрики?

button1Class = createClass 
    render: -> ... 

button2Class = createClass 
    render: -> ... 

module.exports = { 
    button1Class: button1Class, 
    button2Class: button2Class, 
    button1: createFactory(button1lass) 
    button2: createFactory(button2Class) 
} 

Таким образом, я должен буду сделать

button1 = require('buttons').button1 # no factory needed 
button2 = require('buttons').button2 # no factory needed 
+0

Хороший вопрос, но разве это не вопрос, связанный с модулем npm/browserify? –

+0

Нет. Я думаю, что это тесно связано с реакцией. – Kursion

+0

Okey, во всяком случае ... Представьте, что вам нужна только кнопка1, поэтому фабрика для кнопки2 также создается. Таким образом, у вас есть ненужный заводский объект. –

ответ

1

Причина заключается в том, что она делает ваш экспорт несовместим с JSX только.

Вам нужно создать фабрики, если вы не используете jsx. Но затем скажите в своем следующем проекте, что вы хотите использовать jsx и повторно использовать свои компоненты, вам придется идти и изменять файлы, что делает их несовместимыми с вашим оригинальным проектом.

В основном ответственность за создание фабрик лежит на потребителях.

https://facebook.github.io/react/blog/2014/10/14/introducing-react-elements.html#anti-pattern-exporting-factories

Я думаю, что экспорт как вариант, но создает накладные расходы для тех, кто их не использует.

+0

Я оставил, но забыл сказать спасибо :) Так что «спасибо»! – Kursion

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