У меня есть компонент hello world реагировать, который написан на JSX, перенесен с помощью babel, а затем включен в шаблон hello.html приложения Flask.Я работаю над созданием и рендерингом компонента перед его переносом следующим образом:
const hello = <Hello name="world" />;
ReactDOM.render(hello, document.getElementById('hello'));
Как я могу выполнить эти два шага в теге <script>
в моем шаблоне hello.html?Моя цель - передать эту переменную имени из шаблона в компонент и затем отобразить ее.
Немного больше контекста:
JSX hello.js выглядит следующим образом:
import React from 'react';
import ReactDOM from 'react-dom'
import { render } from 'react-dom'
class Hello extends React.Component {
constructor(props) {
super(props);
}
render() {
return(
<div>Hello {this.props.name}!!!</div>
)
}
}
//The following works:
//const hello = <Hello name="world" />;
//ReactDOM.render(hello, document.getElementById('hello'));
hello.html выглядит так:
<html>
<head>
</head>
<body>
<div>ASDF</div>
<div id="hello"></div>
</body>
{# The following line is a post babelify (transpiled) hello.js #}
<script type="text/javascript" src="{{ url_for('static', filename='js/hello.js') }}"></script>
<script type="text/javascript">
{#
What goes here? The code in the above section does not work.
The transpiled code defines a "var Hello = /*#__PURE__*/ function (_React$Component) { ...".
const hello = Hello(); does not throw an error, but also does not render or pass an argument.
hello.render(); is also something that I have tried, along with arguments for div/id to render in and name.
#}
</script>
</html>
Исправление: вызов Hello()
не выдает ошибку, если сценарий text/babel
, в этом случае сценарий, вероятно, не 'ничего не делать.
Маршрут Flask выглядит следующим образом:
@app.route(u'/')
def index():
return render_template(u'hello.html', name="universe")