Fable中的'this'属性是如何使用的?

How is the 'this' attribute used in Fable?

我使用寓言作为构建网站的一部分。我正在查看文档以尝试创建一个滑块,并遇到了这个:

div [ ]
    [ Slider.slider [ Slider.OnChange this.onSlide ]
      div [ ]
        [ str (string this.state.Ratio) ] ]

尽管使用上述代码引入了以下错误:

The value, namespace, type or module 'this' is not defined

我只是想知道这是否是文档错误,或者可能有一种新的自引用对象方法

我正在使用以下软件包:

open Fable.React
open Fable.React.Props
open Fulma
open Fulma.Extensions.Wikiki

此外,在源文件中找不到任何内容: https://github.com/Fulma/Fulma/blob/master/src/Fulma.Extensions.Wikiki.Slider/Slider.fs

谢谢 :) !

this 不是 F# 中的东西,也没有像 C# 中那样的特殊含义。如果你看到 this 在一段代码中使用,它只是一个标识符,就像任何其他标识符一样,它必须在上面的某个地方定义,或者作为函数参数,或者作为 let-binding,或者以其他方式定义。

在您的特定情况下,相关代码来自 this file,并且在第 67 行定义了 this

             right here
                  |
                vvvv
67:    override this.render () =
68:        div [ ]
69:            [ Slider.slider [ Slider.OnChange this.onSlide ]
70:              div [ ]
71:                [ str (string this.state.Ratio) ] ]

这里render是周围SliderDemoclass的一个实例方法,这个特定的语法将标识符绑定到class.[=21的实例=]


但是,重申一下,它不一定是 this,这只是一个约定。它也可以是任何其他有效标识符,例如:

    override foo.render () =
        div [ ]
            [ Slider.slider [ Slider.OnChange foo.onSlide ]
              div [ ]
                [ str (string foo.state.Ratio) ] ]

使用this是一种半被接受的做法,因为那个特定的词在其他语言中也被用作关键字,并且具有相同的含义。许多人改用 self