如何定义道具的类型

时间:2017-12-05 19:33:38

标签: compiler-errors reason

代码:

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 />;

如何定义类型,我做错了什么?

1 个答案:

答案 0 :(得分:1)

错误是由match作为保留关键字引起的。您应该已经获得了更好的错误消息,并且我认为这是Reason中的错误。要解决这个问题,如果你需要在JS端编译到match,你可以改用_match,否则只需使用不同的名称。

您(可能)也有一些其他问题:

  1. let home = <Home />不是user之类的函数。它可能需要let home = () => <Home/>

  2. 您正在将记录类型定义为props函数将提供给您的component。但是你可能会得到一个JS对象而不是一个记录。请参阅解释其差异的Reason guide