React - 将状态传递给使用 dangerouslysetHTML 呈现的模板
React - pass state to template rendered with dangerouslysetHTML
在我的应用程序中,我在前端使用 React,在后端使用 Flask。
一些页面呈现静态内容,为此我直接从后端使用 Jinja2 模板。
因此,在前端,我从 Flask 获取我的模板作为响应对象并使用 dangerouslysetHTML
注入它,如下所示:
seeds.py
@seeds_bp.route('/seeds/<user_id>', methods=['GET', 'POST'])
def seeds(user_id):
user = User.query.filter_by(id=user_id).first()
template = render_template('seeds.html',items=items)
response_object = {
'status': 'success',
'data': [{"content": template}]
return jsonify(response_object), 200
获取数据后:
Seeds.jsx
render(){
const {userId} = this.props
var seeds_html = this.state.seeds_template;
var seeds_template = { __html: seeds_html };
return (
<div id="parent">
<h1 className="title is-1"><font color="#C86428">Seeds</font></h1>
<hr/><br/>
<div dangerouslySetInnerHTML={seeds_template}/>
</div>
);
}
}
问题是 我渲染的 html 中有重定向需要 user_id 以及 ,我无法访问它,所以我不能将我的 'user_id' 状态传递给我的模板:
seeds.html
<form action="{{ url_for('menus.edit_menu', items=items, user_id=user_id) }}" method="post">
是否有开箱即用的方法或任何其他自定义函数,以便我可以将此 'user_id' 状态传递给通过 dangerouslysetHTML
呈现的模板?
您可以使用 String.replace()
将变量注入您的模板,然后将其注入您的 dangerouslySetInnerHTML
。像这样:
<form action="{{ url_for('menus.edit_menu', items=items, user_id=_user_id) }}" method="post">
然后:
render() {
const { userId } = this.props;
const seedsHtml = this.state.seeds_template;
const template = { __html: seedsHtml.replace("_user_id", userId) };
return <div dangerouslySetInnerHTML={template} />;
}
在我的应用程序中,我在前端使用 React,在后端使用 Flask。
一些页面呈现静态内容,为此我直接从后端使用 Jinja2 模板。
因此,在前端,我从 Flask 获取我的模板作为响应对象并使用 dangerouslysetHTML
注入它,如下所示:
seeds.py
@seeds_bp.route('/seeds/<user_id>', methods=['GET', 'POST'])
def seeds(user_id):
user = User.query.filter_by(id=user_id).first()
template = render_template('seeds.html',items=items)
response_object = {
'status': 'success',
'data': [{"content": template}]
return jsonify(response_object), 200
获取数据后:
Seeds.jsx
render(){
const {userId} = this.props
var seeds_html = this.state.seeds_template;
var seeds_template = { __html: seeds_html };
return (
<div id="parent">
<h1 className="title is-1"><font color="#C86428">Seeds</font></h1>
<hr/><br/>
<div dangerouslySetInnerHTML={seeds_template}/>
</div>
);
}
}
问题是 我渲染的 html 中有重定向需要 user_id 以及 ,我无法访问它,所以我不能将我的 'user_id' 状态传递给我的模板:
seeds.html
<form action="{{ url_for('menus.edit_menu', items=items, user_id=user_id) }}" method="post">
是否有开箱即用的方法或任何其他自定义函数,以便我可以将此 'user_id' 状态传递给通过 dangerouslysetHTML
呈现的模板?
您可以使用 String.replace()
将变量注入您的模板,然后将其注入您的 dangerouslySetInnerHTML
。像这样:
<form action="{{ url_for('menus.edit_menu', items=items, user_id=_user_id) }}" method="post">
然后:
render() {
const { userId } = this.props;
const seedsHtml = this.state.seeds_template;
const template = { __html: seedsHtml.replace("_user_id", userId) };
return <div dangerouslySetInnerHTML={template} />;
}