使用react-async-bootstrapper时遇到的问题
这篇文章主要讲我学习Jokcy老师的react ssr渲染这门课程时遇到的问题。问题就在于项目中服务端渲染数据同构时使用的react-async-bootstrapper这个库,这个库无法正确解析最新版本的react-router-dom和material-ui的组件(注意是:最新版本)。原因你可以去看一下react-async-bootstrapper的源码。我虽然知道源代码的问题出处,但是还是不知道怎么更改源代码使其兼容,如果你知道如何修改,还望指点。
那么,由于这尴尬的窘境,所以我只好寻求别的解决方法,其实你了解了react-async-bootstrapper的工作机制的后,是可以找到别的解决方案。接下来我想到的解决方法,你可以基于此进行完善。
解决思路是这样子的,当请求过来时,我们需要根据请求的路径去判断首屏渲染需要的数据有哪些,进而请求相应的数据,仅此而已。关键代码如下, 完整代码可以去自行查看:
代码概况这个方法是个async方法,对于每个请求路径进行判断,如果满足就去请求相应的数据。
当然这个方法也有很多不足之处,比如每当有新的功能时,那么我们需要添加新的路径判断代码,会让整个函数变得非常臃肿,而且对于路径的判断也比较繁琐,例如RESTful风格的请求路径。
另一个解决思路就是利用express中间件的机制,对于每个请求路径单独写成一个中间件。将获取的数据绑定到req对象或者使用一个变量去存储都是可以的。你可以自行尝试。
最后附上项目的地址: cnodejs,你可以clone到本地上自行调试。
备注: 通过这门课程,我收获很多,主要就是问题的解决能力的提升和意识到阅读源码的重要性。解决问题的方法很多,如果你有更加优雅的解决方案,还望多多指教。