代码:
let component = ReasonReact.statelessComponent("Page");
type matchParams = {.
id: int
};
type match = {.
params: matchParams
};
type userProps = {.
match: match
};
let home = <Home />;
let user = (~props:userProps) => <User id=props.match.params.id />;
let make = (_children) => {
...component,
render: (_self) =>
<div> <Route key="home" exact=false path="/home" component=home />
<Route key="user" exact=false path="/user/:id" component=user /> </div>
};
输出:
未绑定的记录字段匹配
在行
let user = (~props:userProps) => <User id=props.match.params.id />;
如何定义类型,我做错了什么?
答案 0 :(得分:1)
错误是由match
作为保留关键字引起的。您应该已经获得了更好的错误消息,并且我认为这是Reason中的错误。要解决这个问题,如果你需要在JS端编译到match
,你可以改用_match
,否则只需使用不同的名称。
您(可能)也有一些其他问题:
let home = <Home />
不是user
之类的函数。它可能需要let home = () => <Home/>
您正在将记录类型定义为props
函数将提供给您的component
。但是你可能会得到一个JS对象而不是一个记录。请参阅解释其差异的Reason guide。