Как создавать и использовать компоненты React?

Я пытаюсь понять, как создавать (возможно, экспортировать?) и использовать (импортировать?) компоненты в приложении React? Например, небольшое приложение React ниже представляет собой файл .HTML и работает нормально. Он отображает случайные числа снова и снова. Итак, если бы я хотел поместить класс ShowRandomNumbers extends React.Component в отдельный файл (с расширением.... какого .JSX?) и использовать его в файле HTML с оператором импорта, какие шаги мне нужно было бы сделать? делать?

Я привык к концепции использования внешних файлов JS и CSS, например:

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.38/browser.js"></script>

а также

<link rel="stylesheet" href="../../css/base200.css" />

но эти файлы я просто создаю с помощью простого редактора и автономных файлов Save-As. Я погуглил об экспорте по умолчанию и импорте, и я вижу синтаксис, такой как приложение экспорта по умолчанию; и импортировать приложение из './App.jsx'; Но нет четкого «как». Нужны ли мне утилиты для создания файла JSX?

Шаг за шагом будет оценен. Благодарю вас.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
<title>79E - ALL CDN</title>
</head>

<body>

<div id="container"></div>

<script type="text/babel">

class ShowRandomNumbers extends React.Component {

  constructor(props) {  super(props);  }  

  render() {
    var elapsed = Math.round(this.props.timeNow  / 100);
    var seconds = elapsed / 10 + (elapsed % 10 ? '' : '.0' );
    var r1 = this.props.random1;

    return ( 
    <p >Running for  {seconds} seconds.  Random 1 is:  {r1}   Random 2 is:  {this.props.random2}      </p >
    ); 

  }  // render -- END
}  // Class - End

var start = new Date().getTime();

setInterval(function() {
    ReactDOM.render(
      <ShowRandomNumbers 
        timeNow={ new Date().getTime() - start  } 
        random1= { Math.floor(Math.random() * (500 - 100 + 1)) + 100 }
        random2= { Math.floor(Math.random() * (600 - 100 + 1)) + 100 }
      />,  
      document.getElementById('container')     
    );
 }, 50);
</script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.38/browser.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.4.2/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.4.2/react-dom.min.js"></script>

</body>
</html>

person Milton Valler    schedule 25.03.2017    source источник
comment
Файл jsx нельзя использовать напрямую, браузеры не понимают файлы jsx. Вам нужно перенести его в файл js. Вы можете использовать этот модуль для этой задачи.   -  person Shishir Anshuman    schedule 26.03.2017
comment
Спасибо за ответ. Я смотрел на babel, npm и т. д. Что касается импорта/экспорта, мне кажется (может быть, неправильно), что импорт — это своего рода подделка! В этом веб-пакете все объединяется в один модуль, поэтому реальной динамической загрузки нет. Например, .dll в ОС Windows, которая загружается при необходимости. В таком случае, разве это не похоже на обычный оператор сценария? ‹script› говорит загрузить этот JS с HTML-страницей, даже если я на самом деле не вызываю никаких функций, определенных в файле JS. В отличие от .dll, которая загружается при вызове. (Это, конечно, замедлит работу страницы, поскольку она ожидает загрузки JS.)   -  person Milton Valler    schedule 27.03.2017


Ответы (1)


Чтобы воспользоваться преимуществами импорта/экспорта, вам необходимо использовать сборщик модулей. Webpack — стандартный выбор для приложений React. По сути, это позволяет вам экспортировать компоненты (и другие функции javascript, константы и т. д.) из одного файла, импортировать их в другой файл и использовать их. Webpack строит график зависимостей, анализируя ваш импорт/экспорт, начиная с вашего корневого файла приложения. Он объединяет весь необходимый код и дает вам файл, который вы можете включить с помощью тега script, как вы привыкли.

Изучение того, как настроить проект с помощью Webpack, может быть немного сложным и камнем преткновения для многих людей. Если вы только начинаете работать с React, я настоятельно рекомендую ознакомиться с Создать приложение React. . Это дает вам современную среду разработки React, не беспокоясь о какой-либо конфигурации самостоятельно.

person TLadd    schedule 25.03.2017
comment
Спасибо за ответ. Очень помогает. Я ошибочно смешивал технологии. Вот в чем я думаю проблема. 1) импорт/экспорт - это функции ES6. (Ничего общего с React) 2) Фактическая скрытая поддержка импорта/экспорта НЕ находится в браузерах (по крайней мере, пока). См. URL-адрес ниже: ES6. 3) Таким образом, для работы импорта/экспорта требуются другие технологии, такие как WebPack. Я нахожу это немного странным. Например, Toyota продвигает такие функции, как тормоза, но оставляет их для реализации кому-то другому. Я вижу глянцевую рекламу тормозов и предполагаю, что они идут с каждой Тойотой. создать-реагировать-приложение. Я посмотрю на это. - person Milton Valler; 26.03.2017
comment
Да, это своего рода реальность современной фронтенд-разработки; это не относится к React. Несмотря на то, что современные браузеры имеют довольно хорошую совместимость с функциями ES6, вам все равно, как правило, приходится транспилировать свой код (с помощью Babel) в ES5 для поддержки устаревших браузеров. Таким образом, первоначальная стоимость установки немного выше, но компромисс того стоит, поскольку значительно улучшается опыт разработчиков. Приложение create-react-app было создано специально для того, чтобы противодействовать этим первоначальным затратам на установку и помочь вам начать работу. Понимание всех этих инструментов важно, но обычно это не то, с чего вы хотите начать. - person TLadd; 26.03.2017