Halo, Saya mengalami beberapa masalah saat menulis binding untuk komponen React yang kecil. Saya memiliki tipe serikat yang khas dengan kasing yang mewakili alat peraga untuk komponen. Salah satu kasus itu terlihat seperti Tabs of ITab list
. Ketika saya mencoba mengubah daftar props ini menjadi objek dengan keyValueList
itu berfungsi dengan baik, sampai saya menambahkan prop Tabs
, di mana JavaScript kemudian akan menampilkan kesalahan yang mengatakan Cannot infer key and value of [object Object]
.
open Fable.Core
open Fable.Core.JsInterop
type ITab =
{ Name: string
Selected: bool }
type Props =
| Tabs of ITab list
| Title of string
let tab = { Name = "Hello"; Selected = true }
let works = keyValueList CaseRules.LowerFirst [Title "My Title"]
let doesNotWork = keyValueList CaseRules.None [Tabs [tab]; Title "My Title"]
Saya berharap nilai doesNotWork
tidak menimbulkan kesalahan dan menghasilkan objek yang terlihat seperti:
var doesNotWork = {
title: "My Title",
tabs: [
{
name: "Hello",
selected: true
}
]
}
dotnet fable --version
): 1.3.0Anda dapat memperbaiki masalah Anda dengan menggunakan array:
open Fable.Core
open Fable.Core.JsInterop
type ITab =
{ Name: string
Selected: bool }
type Props =
| Tabs of ITab array
| Title of string
let tab = { Name = "Hello"; Selected = true }
let works = keyValueList CaseRules.LowerFirst [Title "My Title"]
let doesNotWork = keyValueList CaseRules.None [Tabs [| tab |]; Title "My Title"]
Masalah terjadi karena Json/JObject tidak menggunakan tipe daftar yang merupakan objek saat runtime. Json/Jobject hanya tahu array.
Terima kasih! Saya tidak mengetahui batasan itu, semuanya berfungsi sekarang setelah beralih ke array.
Ya, sebenarnya jika Anda menggunakan daftar keyValueList
akan menafsirkan bahwa itu adalah keyValueList bersarang, seperti dalam kasus Style
:
div [ClassName "foo"
Style [BackgroundColor "red"
Width "500px"]] []
Komentar yang paling membantu
Anda dapat memperbaiki masalah Anda dengan menggunakan array:
Masalah terjadi karena Json/JObject tidak menggunakan tipe daftar yang merupakan objek saat runtime. Json/Jobject hanya tahu array.