注意:我指的是函数的纯原因,而不是原因
给定一个不使用子函数的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)
用下划线将子参数标记为未使用:
let f = (~foo, ~_children, ()) => foo;
<f foo="a" />;
产生一个有关从JSX调用中期待子级的错误:
line 2, characters 7-10:
Error: This expression has type bytes but an expression was expected of type
children:'a -> 'b
有办法编译不使用子函数的JSX函数吗?
发布于 2018-08-02 16:06:59
问题是,~_children
不仅在内部重命名该参数并将其标记为未使用的参数,而且还将其外部重命名。因此,~children
不再是函数签名的一部分。
相反,您应该使用as
在内部重命名它,这仍然将它标记为未使用的:
let f = (~foo, ~children as _children, ()) => foo;
发布于 2018-07-23 01:31:10
让它成为一个可选的参数有效吗?
let f = (~foo, ~children=?, ()) => foo;
<f foo="a"/>
https://stackoverflow.com/questions/51468865
复制相似问题