Feliz: [<importedreactcomponent from="bar">]</importedreactcomponent>

作成日 2020年12月12日  ·  6コメント  ·  ソース: Zaid-Ajaj/Feliz

インポートされたコンポーネントをモデル化するために属性を追加して、呼び出しサイトで同じ変換を行う必要があります。 したがって、オプションの引数または(匿名の​​)レコード小道具を簡単に使用できます。

type ExternalModule =
    [<ImportedReactComponent("AnotherComponent", from="external-module")>]
    static member Component(name: string, flag: bool): ReactElement = jsNative

[<ImportedReactComponent("AnotherComponent", from="external-module")>]
let AnotherComponent (props: {| foo: int; bar: string |}): ReactElement = jsNative 

これは忘れないで、自分でPRを送ろうと思います。

最も参考になるコメント

@alfonsogarciacaro公開されたFelizv1.25は、あなたが書くことを可能にするはずです

[<ReactComponent(import="Hello", from="external-module")>]
let HelloWrapper (name: string) (children: ReactElement []) = Html.none

体はどこHelloWrapper戻っnull我々は宣言を取り除くことができず、呼び出しサイトで、インポートされた関数が代わりに適用されたパラメータで使用されているため、

全てのコメント6件

ああ、それは実際には本当にクールだろう😍

しかし、なぜ同じ属性を使用しないのですか?

// import { AnotherComponent } from "external-module"; 
[<ReactComponent(import="AnotherComponent", from="external-module")>]
let Component(name: string, flag: bool): ReactElement = jsNative

// import Component from "external-module"
[<ReactComponent(importDefaultFrom="external-module")>]
let Component(name: string, flag: bool): ReactElement = jsNative

私は個人的にこれが好きです、あなたはどう思いますか?

それもうまくいくはずです😄

私の将来は、プラグインをREPLで機能させたい場合、将来問題が発生する可能性があると言っています。現在、プラグインの初期化にSystem.Activatorを使用しており、Fableではこれはプライマリでのみ機能します。コンストラクタ。 ただし、属性コンストラクターではオプションの引数を使用できないため、複数のコンストラクターを使用する必要があります。

とにかく、複数のコンストラクターを持つ属性を常に回避することは不可能であり(すでにそれらを使用しています)、時が来たときに回避策を見つけることができると確信しています😸

別の属性を使用する場合は、代わりに動詞を使用することをお勧めします: [<ImportReactComponent>]
これにより、JS相互運用属性( [<ImportDefault>] )との整合性が保たれます。

@VitalyBrusentsev新しい属性の代わりに、同じ[<ReactComponent>]内の新しいパラメーターを試してみるだけだと思います

@alfonsogarciacaro私は今それを試しています

@alfonsogarciacaro公開されたFelizv1.25は、あなたが書くことを可能にするはずです

[<ReactComponent(import="Hello", from="external-module")>]
let HelloWrapper (name: string) (children: ReactElement []) = Html.none

体はどこHelloWrapper戻っnull我々は宣言を取り除くことができず、呼び出しサイトで、インポートされた関数が代わりに適用されたパラメータで使用されているため、

このページは役に立ちましたか?
0 / 5 - 0 評価