首页 > 解决方案 > 此表达式具有类型...但表达式应为类型

问题描述

我正在使用 bs-material-ui-icon 绑定,但在尝试使用它组件时出现类型错误。

module Cell = {
  type status =
    | Empty
    | Tick
    | Cross;
  /* let icon =  React.createElement(MaterialUIIcons.AccessAlarm); */

  [@react.component]
  let make = _children => {
    <div> <MaterialUIIcons.AccessAlarm /> </div>; /** <MaterialUIIcons.AccessAlarm /> erorr **/
  };
};

这是它给出的错误消息:

This expression has type
         'a =>
         ReasonReact.component(ReasonReact.stateless,
                                ReasonReact.noRetainedProps,
                                ReasonReact.actionless)
       but an expression was expected of type
         React.component('a) = 'a => React.element
       Type
         ReasonReact.component(ReasonReact.stateless,
                                ReasonReact.noRetainedProps,
                                ReasonReact.actionless)
           =
           ReasonReact.componentSpec(ReasonReact.stateless,
                                      ReasonReact.stateless,
                                      ReasonReact.noRetainedProps,
                                      ReasonReact.noRetainedProps,
                                      ReasonReact.actionless)
       is not compatible with type React.element 

我正在使用 react-jsx 3 (如果这件事)

标签: reasonreason-react

解决方案


就像@glennsl 所说,这是因为您缺少 JSXv2 和 JSXv3。有一个支持 JSXv3 的新分支,您可以在这里找到https://github.com/jsiebern/bs-material-ui/tree/hooks。它在hooks标签中发布在 npm 上。


推荐阅读