module AppView
#r "../../../node_modules/fable-core/Fable.Core.dll"
open Fable.Core
open Fable.Import.Browser
open Fable.Core.JsInterop
[<Import("default", from="../../../js/3rd/riot.js")>]
module riot_js =
let mount:((string*obj)->array<obj>) = jsNative
type App
(
tagName:string
,state
,store
) =
member public x.AppTag =
(riot_js?mount ("app", state))
// does not compile: The value or constructor 'riot_js' is not defined.
// (riot_js.mount ("app", state))
// compiles wrongly to: riot_js.mount(["app", this.state]);
がriot_js?mount
は魔法riot_jsがこれ以上存在しないために原因となるしよう試してriot_js.mount
をriot_js.mount(["app", this.state]);
にコンパイルしてみてください。
マウントには引数が1つではなく2つではありませんが、間違っていたり間違っていたりしません。今の
私は奇妙な探して解決策のいずれかを持っている:
[<Emit("riot_js")>]
let riot_js (x: int): obj = jsNative
...
((riot_js 1)?mount ("app", state))
これは配列を返しますが、再びフェイブルは私が「正常な」方法で、最初の要素を取ることはできません。
((riot_js 1)?mount ("app", state))?[0]
はエラーで[
に私に赤を与えるUnexpected symbol '[' in expression. Expected identifier, '(' or other token.
そして
((riot_js 1)?mount ("app", state)).[0]
はエラーThe field, constructor or member 'Item' is not defined.
ですべてで次のように赤い与える
((riot_js 1)?mount ("app", state))?``0``
"作品" とにコンパイルされます。
riot_js.mount("app", this.state)["0"];
ない誰かが得ることができる最高の結果。私はこの質問をしばらく置いておき、Fableとの2つの問題を開く前に1週間ほどそれに賞金を設定します。