createFactory¶
Устарело
Этот API будет удален в одной из будущих основных версий React.
createFactory
позволяет вам создать функцию, которая производит элементы React заданного типа.
1 |
|
Описание¶
createFactory(type)
¶
Вызовите createFactory(type)
для создания фабричной функции, которая производит элементы React заданного типа
.
1 2 3 |
|
Затем вы можете использовать его для создания элементов React без JSX:
1 2 3 4 5 6 7 8 9 10 |
|
Параметры¶
type
: Аргументtype
должен быть допустимым типом компонента React. Например, это может быть строка имени тега (например,'div'
или'span'
) или компонент React (функция, класс или специальный компонент типаFragment
).
Возвращает¶
Возвращает фабричную функцию. Эта фабричная функция получает в качестве первого аргумента объект props
, затем список аргументов ...children
и возвращает элемент React с заданными type
, props
и children
.
Использование¶
Создание элементов React с помощью фабрики¶
Хотя большинство проектов React используют JSX для описания пользовательского интерфейса, JSX не обязателен. В прошлом createFactory
был одним из способов описания пользовательского интерфейса без JSX.
Вызовите createFactory
, чтобы создать заводскую функцию для определенного типа элемента, например `'кнопка``:
1 2 3 |
|
Вызов этой фабричной функции приведет к созданию элементов React с предоставленными вами пропсами и дочерними элементами:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Так createFactory
использовался в качестве альтернативы JSX. Однако createFactory
устарел, и вы не должны вызывать createFactory
в любом новом коде. О том, как отказаться от createFactory
, читайте ниже.
Альтернативы¶
Копирование createFactory
в ваш проект¶
Если в вашем проекте много вызовов createFactory
, скопируйте эту реализацию createFactory.js
в ваш проект:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
1 2 3 4 5 |
|
Это позволит вам сохранить весь ваш код неизменным, за исключением импорта.
Замена createFactory
на createElement
¶
Если у вас есть несколько вызовов createFactory
, которые вы не против перенести вручную, и вы не хотите использовать JSX, вы можете заменить каждый вызов функции фабрики вызовом createElement
. Например, вы можете заменить этот код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
с помощью этого кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Вот полный пример использования React без JSX:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Замена createFactory
на JSX¶
Наконец, вы можете использовать JSX вместо createFactory
. Это наиболее распространенный способ использования React:
1 2 3 4 5 6 7 8 9 10 11 |
|
Иногда существующий код может передавать некоторую переменную в качестве type
вместо константы типа 'button'
:
1 2 3 4 5 |
|
Чтобы сделать то же самое в JSX, нужно переименовать переменную так, чтобы она начиналась с заглавной буквы, например Type
:
1 2 3 4 |
|
В противном случае React будет интерпретировать <type>
как встроенный HTML-тег, поскольку он строчный.