Как я могу иметь глобальную переменную для самого React в create-реагировать-приложение (или в противном случае избежать импорта React везде)? - PullRequest
1 голос
/ 12 марта 2020

В более старых приложениях React, над которыми я работал, которые напрямую использовали Babel / Webpack, я смог сделать:

import React from 'react';
global.React = React;
// rest of my imports

И, следовательно, избавить от необходимости, чтобы каждый файл в моей кодовой базе имел одинаковый избыточный и бессмысленный импорт.

Однако, когда я попытался проделать тот же трюк с приложением create-react-app, он разозлился на меня, пытаясь «импортировать в теле» из-за импорта, который происходит после global.React = React line.

Так что мой вопрос в том, возможно ли в create-react-app как-то установить React в качестве глобальной переменной, чтобы не не было бессмысленно / явно импортированы в каждый JSX с использованием файла?

1 Ответ

0 голосов
/ 12 марта 2020

НОВЫЙ / ИЗДАННЫЙ ОТВЕТ (по состоянию на апрель 2020 года):

В настоящее время ответ остается прежним, ниже (ie. create-react-app не может поддержка глобальная React). Тем не менее, никто иной, как сам Дан Абрамов, недавно ответил на тему GitHub :

Запланированные изменения в преобразовании JSX сделают его автоимпортом React. В этом мире ваше глобальное решение не будет работать, но оно решит проблему, которая вас раздражает.

Итак, хорошая новость заключается в том, что команда React планирует представить решение для проблема, которая потребует даже меньше работы, чем необходимость создания глобальной переменной!

СТАРЫЙ ОТВЕТ:

Ответ, как представляется, create-react-app использует правило ESLint: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/react-in-jsx-scope.md

Как сказано в нижней части этого правила:

Если вы устанавливаете React как глобальную переменную, вы может отключить это правило

... но по какой-то причине create-react-app люди не решили отчитываться за это.

Но я бы хотел ошибиться в этом , и с радостью удалит этот ответ, если кто-нибудь сможет предоставить рабочий.

PS Довольно интересно, что в этой теме https://github.com/facebook/create-react-app/issues/4281 они фактически предоставляют шаблон для настройки React глобально, но когда я следую их шаблон (с импортом './globals' вверху) я все еще получаю ошибку ... опять, вероятно, потому что ESLint не знает об этом.

PPS: я подал https://github.com/facebook/create-react-app/issues/8643, в надежде, что команда create-react по крайней мере захочет ответить, почему они раньше Позволь этому и не делай больше. В идеальном мире они предложат новый способ, но они могут просто сказать «не используйте React globals». В любом случае, я добавлю «PPPS», когда они ответят.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...