如何编译不使用 children 的 Reason JSX 函数
How to compile Reason JSX functions that don't use children
[注意:我指的是纯 Reason JSX 函数 不是 Reason React PPX]
给定一个不使用 children 的 JSX 函数:
let f = (~foo, ~children, ()) => foo;
<f foo="a" />;
试图用 dune build
编译它会产生这个错误,这似乎阻止了可执行文件的创建:
line 1, characters 16-24:
Warning 27: unused variable children.
File "hello_world.re", line 1:
Error: Some fatal warnings were triggered (1 occurrences)
用下划线将 children 参数标记为未使用:
let f = (~foo, ~_children, ()) => foo;
<f foo="a" />;
从 JSX 调用中产生关于期望 children 的错误:
line 2, characters 7-10:
Error: This expression has type bytes but an expression was expected of type
children:'a -> 'b
有没有办法编译不使用 children 的 JSX 函数?
将其设为可选参数行得通吗?
let f = (~foo, ~children=?, ()) => foo;
<f foo="a"/>
问题是 ~_children
不仅在内部重命名参数并将其标记为未使用,而且还在外部重命名。所以 ~children
不再是函数签名的一部分。
相反,您应该使用 as
在内部重命名它,这仍然会将其标记为未使用:
let f = (~foo, ~children as _children, ()) => foo;
[注意:我指的是纯 Reason JSX 函数 不是 Reason React PPX]
给定一个不使用 children 的 JSX 函数:
let f = (~foo, ~children, ()) => foo;
<f foo="a" />;
试图用 dune build
编译它会产生这个错误,这似乎阻止了可执行文件的创建:
line 1, characters 16-24:
Warning 27: unused variable children.
File "hello_world.re", line 1:
Error: Some fatal warnings were triggered (1 occurrences)
用下划线将 children 参数标记为未使用:
let f = (~foo, ~_children, ()) => foo;
<f foo="a" />;
从 JSX 调用中产生关于期望 children 的错误:
line 2, characters 7-10:
Error: This expression has type bytes but an expression was expected of type
children:'a -> 'b
有没有办法编译不使用 children 的 JSX 函数?
将其设为可选参数行得通吗?
let f = (~foo, ~children=?, ()) => foo;
<f foo="a"/>
问题是 ~_children
不仅在内部重命名参数并将其标记为未使用,而且还在外部重命名。所以 ~children
不再是函数签名的一部分。
相反,您应该使用 as
在内部重命名它,这仍然会将其标记为未使用:
let f = (~foo, ~children as _children, ()) => foo;