Использование собственных модулей в Fable для реактивного приложения
У меня возникли некоторые проблемы с переносом кода JavaScript в приложение-ответ F# fable. В частности, некоторые методы реагирования для взаимодействия с couchbase lite.
К сожалению, мой уровень владения javascript в лучшем случае не существует, хотя это, вероятно, довольно простая проблема. Я по существу хочу это:
import {NativeModules} from 'react-native';
NativeModules.CouchDB.addToDatabase("hei", (err, name) => console.log(err,name));
Использование в F# вместе с транспортером басни, спасибо, любые указатели на то, как этого добиться, будут великолепны.
1 ответ
Unfortunately, it will take slightly more work then the code example provided. You essentially have to write bindings in F# for the JS code you want to use. You can find some pointers here: https://fable.io/docs/communicate/js-from-fable.html.
You will often need to actually look at the JS code to be able to write correct bindings. For your specific example, you'd implement a CouchDB type with abstract member addToDatabase, like in this piece of code taken from the above link:
type IAlert =
abstract triggerAlert : message:string -> unit
abstract someString: string
Would become: (not working code, just exemplary, I'm not familiar with the CouchDB library)
type CouchDB =
abstract addToDatabase : params -> returnType
You'd then actually call the function like this:
[<ImportAll("my-module")>]
let mylib: IAlert = jsNative
mylib.addToDatabase params