Генерировать ReactJS внутри цикла PHP

#php #reactjs

#php #reactjs

Вопрос:

Я полный новичок в REACT, особенно для извлечения информации с сервера. У меня нет никакого API внутри моего бэкэнда, так что… Могу ли я сгенерировать код react следующим образом?

Пример моего компонента:

 var Test= React.createClass({

    render: function () {
        return (
            <div>
                <p>
                    This is my test: {this.props.name}
                </p>
            </div>
        );
    }
});
  

Как я думаю, я могу «визуализировать» этот компонент react с помощью цикла PHP:

 <script type="text/babel">
    <?php foreach($tests as $test){ ?>

        ReactDOM.render(

            <div className="text-center">
                <Test name="Test 1" />
                <Test name="laralala"  />        
            </div>

        ,document.getElementById("test")
        );


    <?php}  ?>
</script>
  

Но я думаю, что предыдущий «способ» — это совершенно плохая практика… Кто-нибудь может мне немного помочь? Я не собираюсь ничего менять в серверной части…

Большое вам спасибо.

Комментарии:

1. Вы думали о том, чтобы поместить данные в качестве глобальной / статической переменной JS внутри HTML и просто написать обычное приложение React? 🙂

2. О, например var test = <?php echo json_encode($tests); ?>; ???

3. Точно. Пока вам нужны только данные изначально, это будет работать. Проблема, с которой вы столкнетесь, заключается в том, что вам придется перезагружать свою страницу каждый раз, когда $tests обновлялась (например, с помощью формы). Это как бы противоречит всей этой логике «одностраничного приложения». Но я думаю, что если у вас нет API, вы застряли с этим решением.

4. Хммм, я понимаю. На самом деле я не хочу СПА. Мне нужна только внешняя среда для улучшения качества моих приложений 🙂 вы порекомендуете мне другой вариант или ReactJS — это вариант для не SPA? Кстати, разместите свой комментарий как и ответ

Ответ №1:

Доступ к данным из PHP

Одним из возможных решений было бы поместить ваши данные (сгенерированные PHP) на сгенерированную HTML-страницу в виде глобальных / статических переменных JS, например var data = <?php echo json_encode($data); ?>; .

Пока вам нужны только данные изначально, это будет работать нормально. Проблема, с которой вы столкнетесь, заключается в том, что вам придется перезагружать свою страницу каждый раз, когда $data обновлялась (например, с помощью формы). Это как бы противоречит всей этой логике «одностраничного приложения». Но я думаю, что если у вас нет API, вы застряли с этим решением.

@СПА-центр

Реакция в настоящее время в моде. Но если вам не нужна вся его мощь (быть SPA с маршрутизацией, состоянием на стороне клиента, …) Я бы предложил просто использовать что-нибудь простое, но мощное, например jQuery . Пользоваться им прекрасно, даже в 2016 году. Вы также можете изучить Polymer или веб-компоненты.

Если вы еще не знаете React и нуждаетесь в нем только для рендеринга некоторого HTML, я не думаю, что вам нужно его изучать. Есть и другие хорошие альтернативы для рендеринга динамического HTML (не для этого ли изначально был режим PHP?!).

Комментарии:

1. У меня есть мой компонент React, который подключается с помощью Webpack. Для работы этого компонента требуется 2 параметра: — идентификатор документа для рендеринга, — хост API для доступа. Как мне передать эти 2 из PHP в React? Есть ли лучший способ, чем глобальные переменные JS?

2. Вы можете использовать рендеринг на стороне сервера. Например. github.com/reactjs/react-php-v8js