express里获取出url里的参数后,如何将这个参数传到react中
概述:后台为express搭建,使用ejs为模板语言
app.set('view engine', 'html');
app.engine('html', ejs.renderFile);
在express的中间件中添加了一个路由
app.use('/biquge/:bookid',router.getBookDetatl)
路由文件:
exports.getBookDetatl=function (req,res) {
...
//先获取bookid,再将这个bookid传到要渲染的模板中
res.render('biquge/bookDetail')
}
现在的问题是,我这个模板是react生成的
模板如下,后缀为html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>biquge</title>
<meta content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0,user-scalable=no" name="viewport" id="viewport">
<link type="text/css" rel="stylesheet" href="/static/semantic.min.css" >
</head>
<body>
<div id="root"></div>
</body>
<script src="/static/bookDetail.js"></script>
<script src="/static/jquery.min.js"></script>
<script src="/static/semantic.min.js"></script>
</html>
其中bookDetail.js是我react的入口文件,如下:
import React,{Component} from 'react';
import ReactDOM from 'react-dom';
import BookDetail from './view/bookDetail/BookDetail.js';
ReactDOM.render(
<BookDetail />,
document.getElementById('root')
)
在引用的BookDetail组件中,我想要在componentDidMount这个生命周期拿到之前提到的bookid,然后用这个bookid,post到后台提供的接口中去,例如:
componentDidMount(){
fetch('/biquge/interface/getChapters',{method:'POST',body:'bookid=111'})
.then(res=>{
return res.json();
}).then(chapterList=>{
this.setState({chapterList})
})
}
最后用这个chapterList进入react的渲染
在上面这一整个过程中,解决不了的一步就是如何将express中的bookid传到这个react的组件里去,万分恳请各位大佬提点建议,或者其它思路
ps.有一个解决方案是在组件里用window.location获取,这样是可以获取出来的,但是感觉违背了我之前的设计思路,不怎么想用
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你是要服务端渲染么,
http://redux.js.org/docs/reci...
如果想要把输入传入到前端在此渲染,直接将数据通过<script>标签嵌入到html模板中。