类型 ''a list' 与类型 'ReactElement' 不兼容
The type ''a list' is not compatible with the type 'ReactElement'
我正在尝试从字符串列表中生成多个 div。
使用字符串生成单个 div 工作正常
div []
[ "mytext" |> str ]
但是下面的代码在尝试通过字符串列表生成时显示错误
"The type ''a list' is not compatible with the type 'ReactElement'"
div []
[
myList
|> List.map(fun f ->
div[]
[f |> str])]
]
问题是第一个 div
之后的额外 []
。
在以下内容中:div [] [ "hello" |> str ]
您有 2 个列表。第一个是空的属性列表,第二个是子元素列表 - 有一个子元素 "hello" > str
.
在你的第二个例子中,你有两个相同的列表,第一个仍然是空的,第二个包含另一个列表,所以你有一个包含反应元素列表的列表。
你只需要自己传递一个反应元素列表。
考虑以下因素:
let words = ["Hello"; "World"; ]
let mapWords = //ReactElement list
words |> List.map (fun w -> div[] [w |> str])
div [] [ mapWords ]
|> mountById "elmish-app" //added for fable REPL
[ mapWords ]
是有列表的列表。
当你已经有了一个反应元素列表时,你所做的只是将它们作为第二个参数传递给 div
:
div [] mapWords
|> mountById "elmish-app"
或者如果您不喜欢单独的功能:
div [] (words |> List.map (fun w -> div[] [w |> str]))
表达式两边需要额外的括号,因此 F# 知道它是一个表达式,这就是为什么我通常更喜欢使用较小的函数,它们也有助于保持简洁。
寓言回复中的例子here。
我正在尝试从字符串列表中生成多个 div。 使用字符串生成单个 div 工作正常
div []
[ "mytext" |> str ]
但是下面的代码在尝试通过字符串列表生成时显示错误
"The type ''a list' is not compatible with the type 'ReactElement'"
div []
[
myList
|> List.map(fun f ->
div[]
[f |> str])]
]
问题是第一个 div
之后的额外 []
。
在以下内容中:div [] [ "hello" |> str ]
您有 2 个列表。第一个是空的属性列表,第二个是子元素列表 - 有一个子元素 "hello" > str
.
在你的第二个例子中,你有两个相同的列表,第一个仍然是空的,第二个包含另一个列表,所以你有一个包含反应元素列表的列表。
你只需要自己传递一个反应元素列表。
考虑以下因素:
let words = ["Hello"; "World"; ]
let mapWords = //ReactElement list
words |> List.map (fun w -> div[] [w |> str])
div [] [ mapWords ]
|> mountById "elmish-app" //added for fable REPL
[ mapWords ]
是有列表的列表。
当你已经有了一个反应元素列表时,你所做的只是将它们作为第二个参数传递给 div
:
div [] mapWords
|> mountById "elmish-app"
或者如果您不喜欢单独的功能:
div [] (words |> List.map (fun w -> div[] [w |> str]))
表达式两边需要额外的括号,因此 F# 知道它是一个表达式,这就是为什么我通常更喜欢使用较小的函数,它们也有助于保持简洁。
寓言回复中的例子here。