如何将Variants作为道具传递给ReasonML中的React组件?

时间:2019-04-30 03:55:29

标签: reason bucklescript reason-react

我已经尝试了以下方法来发送变体作为道具。

type ipAddr =
  | IPV4
  | IPV8;


[@react.component]
let make = () => {
  let appData = Data.tileData;
  <div className="App">
    <header className="flex outline justify-between" />
    <Content selected={ipAddr.IPV4} appData />
  </div>;
};

但是会引发错误,

  

忍者:错误:重建'build.ninja':子命令失败

我也尝试过将变体直接发送到Component。

  <div className="App">
    <header className="flex outline justify-between" />
    <Content selected=IPV4 appData />
  </div>;

但是它最终返回了另一个错误

  

开始编译忍者:错误:依赖周期:src / App-ReactHooksTemplate.cmj-> src / Content-ReactHooksTemplate.cmj   -> src / App-ReactHooksTemplate.cmj   完成编译(退出:1)

我要去哪里错了?

2 个答案:

答案 0 :(得分:1)

免责声明:我不知道ReasonML,但是

如果是OCaml,则只需编写IPV4,而不必像ipAddr.IPV4那样限定它。
也许原因是一样的?

答案 1 :(得分:1)

我用另一种方式解决了这个问题。我没有将变体作为prop传递,而是仅根据变体值渲​​染了不同的组件。

[@react.component]
let make = () => {
  let appData = Data.tileData;
  switch (selected) {
  | IPV4 =>
    <div>
      <IPV4Renderer appData />
    </div>
  | IPV6 =>
    <div>
      <IPV6Renderer appData />
    </div>
  };
};