Tag: 反应了

testing一个then()块内的代码

所以我使用React和Mocha / Chai / Enzyme / Sinon进行testing。 我有很多asynchronous调用在我的组件,我想testing后来的代码,但不知道如何。 所以例如这是我的AddToCart组件内的reserveSession()方法: reserveSession() { this.props.reserveExam(id).then((json) => { // Code I want to test }).catch(…); } 这是我testing的当前设置: describe('AddToCartButton', () => { beforeEach(() => { props = { // set all props to empty or () => null } wrapper = mount(<AddToCartButton {…props} />) }); }); 所以我发现到目前为止,当我嘲笑this.props.reserveExam在每个之前,因为它不曾调用实际的function,它永远不会调用当时的代码,但如果我只是调用该方法不明白那是什么。 任何想法如何testing? 谢谢!

ReactJS为服务器端渲染应用渲染应用两次吗? (DUPLICATE CODE)

在服务器端渲染,结构是否要求我们渲染应用程序两次? 在server.js文件中,如下所示,应用程序结构被呈现并发送到客户端。 虽然完整的代码已经由Server.js生成,但是Client.js通过调用render函数再次完成。 所以应用程序的最终结构,正如我所理解的那样:SERVER.js(呈现HTML,获取初始状态并将其设置在PRELOADED_STATEvariables中,使用renderFullPage函数呈现页面)==> CLIENT.js(呈现应用程序结构使用PRELOADED_STATEvariables 如果我错了,请纠正我。 如果不是,我们不能只做一次吗? Server.js import path from 'path' import Express from 'express' import React from 'react' import { createStore } from 'redux' import { Provider } from 'react-redux' import counterApp from './reducers' import App from './containers/App' import { renderToString } from 'react-dom/server' const app = Express() const port = 3000 // […]

如何使用React-Helmet优化SPA的SEO?

我的项目是使用react js的单页面应用程序。 我听说Google可以抓取JavaScript页面,包括反应js单页面应用程序,而不需要服务器端渲染(即使它通常对SEO更好)。 然而,当我使用网站pipe理员工具:获取和呈现为谷歌,谷歌漫游器都看到什么,以及我的网页访问者看到的是空白的。 即使我可以添加特定的url到谷歌索引,谷歌只使用我已经放在我的静态index.html文件中的标题和描述标签,它不会得到嵌套的反应头盔组件的标题和描述。 有没有人有这方面的经验? 非常感谢!

如何在服务器端渲染的React应用程序中构造多个HTTP请求?

我目前正在使用下面的服务器端渲染逻辑(使用reactjs + nodejs + redux)第一次同步获取数据,并将其设置为存储中的初始状态。 fetchInitialData.js export function fetchInitialData(q,callback){ const url='http://….' axios.get(url) .then((response)=>{ callback((response.data)); }).catch((error)=> { console.log(error) }) } 我asynchronous获取数据,并加载输出存储在第一次使用callback加载页面。 handleRender(req, res){ fetchInitialData(q,apiResult => { const data=apiResult; const results ={data,fetched:true,fetching:false,queryValue:q} const store = configureStore(results, reduxRouterMiddleware); …. const html = renderToString(component); res.status(200); res.send(html); }) } 我有一个要求在初始页面加载4到5个API调用,因此想要检查是否有一个简单的方法来实现在页面加载多个调用。 我是否需要链接api调用并手动合并来自不同API调用的响应并将其发回以加载初始状态? 更新1:我想使用axios.all方法,有人可以告诉我,如果这是一个理想的方法?