我正在建立一个简单的玩具应用程序来学习React/Hapi,一切运行良好,直到我尝试设置服务器端路由.服务器运行时没有错误,并使用hello world正确呈现"/".
但是,当我导航到"/ test"时,我收到以下错误.
Warning: Failed propType: Required prop `history` was not specified in `RoutingContext`.
Warning: Failed propType: Required prop `location` was not specified in `RoutingContext`.
Warning: Failed propType: Required prop `routes` was not specified in `RoutingContext`.
Warning: Failed propType: Required prop `params` was not specified in `RoutingContext`.
Warning: Failed propType: Required prop `components` was not specified in `RoutingContext`.
Run Code Online (Sandbox Code Playgroud)
我在哪里错了?
Server.js
'use strict';
const Hapi = require('hapi');
const Path = require('path');
const server = new Hapi.Server();
server.connection({ port: 3000});
//React …Run Code Online (Sandbox Code Playgroud) 如何使材料UI按钮左对齐标签?没有任何道具可以直接更改button元素上的内联样式,而我能想到的唯一方法是添加一个类并编写一些总的CSS选择器,例如thisClass> div> button。
我已经苦苦挣扎了一段时间,以前有这个工作,但莫名其妙地,它又被打破了,所以很明显根本原因还没有解决.
React Router v:2.0.0-rc4
问题:加载页面时,服务器返回以下错误.
Warning: Failed propType: Required prop `router` was not specified in `RouterContext`.
Warning: Failed propType: Required prop `location` was not specified in `RouterContext`.
Warning: Failed propType: Required prop `routes` was not specified in `RouterContext`.
Warning: Failed propType: Required prop `params` was not specified in `RouterContext`.
Warning: Failed propType: Required prop `components` was not specified in `RouterContext`.
Warning: [react-router] `<RouterContext>` expects a `router` rather than a `history`
Run Code Online (Sandbox Code Playgroud)
页面正常加载,客户端路由似乎工作得很好.
来自Server.js的相关片段:
import routeConfig from './../common/routes/Routes.js';
const handleRender = …Run Code Online (Sandbox Code Playgroud) 所以我试图围绕 Observables 进行思考,并且在大多数情况下它们是有道理的 - 但所有的文档都假设你实际上是在处理数据流 - 并且 Angular 使每个 http 调用默认为一个 observable,即使这些不是流,而是隔离返回的值,这让我有些困惑。
所以,我正在进行一个 http 调用,它返回一个对象数组。然后我需要映射该数组,并根据每个对象中的键生成一个新的 http 调用。然后我需要收集来自这些调用的所有响应,并映射初始数组以根据来自第二个调用数组的响应设置一个属性。
原谅 Sudo 代码
this._http.get<>(url).subscribe(value => myData = value);
Run Code Online (Sandbox Code Playgroud)
它返回一个数组,如
[
{ clientId: 1, ..additional properties},
{ clientId: 2, ..additional properties},
]
Run Code Online (Sandbox Code Playgroud)
然后我需要映射这个并像这样产生新的 http 调用
response.map(item => {
this._http.get(`someurl/${item.clientId})
}
Run Code Online (Sandbox Code Playgroud)
然后我需要将所有这些调用组合成一个数据块,这样我就可以做类似的事情
myData.map(item => {
item.fullClient = ArrayOfClientReturns.find(client => client.id === item.clientId);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我完全理解如何用 Promise 做到这一点,但是对于 observables,我真的不确定。我了解如何使用 pipe(map()) 来组合 observables,但我不明白如何映射数据数组并根据初始 observable 的响应生成一组 observables,然后等待它们全部完成解析,然后像这样重新映射初始数据集。
我确定我只是在 rxjs 文档中遗漏了正确的方法,但是每个示例都显示了在尝试组合它们之前组合已经存在的 observables。
如果有人能指出我正确的方向,我将不胜感激。