2

我正在尝试在 Rescript/React 应用程序中使用该material-ui库。下面的代码将显示一个按钮:

@module("@material-ui/core/Button") external button: string = "default"

@react.component
let make = () => {
     <button > {React.string("Hello")} </button>
}

显示的按钮是基本的,我无法更改基本属性variant="contained", 例如color="primary"无法识别它们。我尝试将string第一行中的类型更改为 TypeScript@material-ui/core/Button文件中的类型,但没有成功。我尝试使用%%raw()and %raw(),但它们非常有限。我无法使用它们返回的对象,因为 ReScript 不知道它们的类型。此外,我无法在函数内部调用React.useEffect()using %raw()(因为它不返回任何内容) 。make

在 TypeScript 中,我可以使用对象和调用函数,而不需要关于它们的类型信息。

有没有办法在 ReScript 中做同样的事情,还是我必须自己添加所有的输入信息(如果我想使用库)?

4

3 回答 3

0

在这里您可以找到 material-ui 的绑定。 在这里你可以找到 github repo

rescript-material-ui为基于 Javascript 的 UI 库 MUI(以前称为 MaterialUi)提供 ReScript 绑定。

绑定是利用原始包的文档生成脚本自动生成的。这些依赖于代码和代码注释的混合,并不总是 100% 准确。

这将直接转化为绑定。如果您遇到组件上缺少的道具或行为不端的组件,请随时打开一个问题。

于 2021-12-08T14:32:57.420 回答
0

您不能像我们在 typescript 中那样直接使用库。Rescript 有一个非常强大的类型系统,并且没有any类型。

您可以将此库https://www.npmjs.com/package/@jsiebern/bs-material-ui用于 Rescript 材料 ui 绑定。您可以在此处检查绑定或重新编写库。只有当没有可用的绑定时,您才可能需要编写它。

于 2021-06-22T06:26:35.277 回答
0

绑定签名不正确。尝试这个:

module Button = {
  @module("@material-ui/core/Button") @react.component
  external make: (~variant=option<[ | #outline | #contained ]>=?, ~children) => React.element = "default"
}


@react.component
let make = () => {
     <Button variant=#outline> {React.string("Hello")} </Button>
}
于 2021-06-24T14:29:28.070 回答