Использование собственных модулей в 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
Другие вопросы по тегам