如何在Svelte中使用RXJs主题类存储变量

如何在Svelte中使用RXJs主题类存储变量,rxjs,svelte,svelte-3,rxjs-observables,svelte-store,Rxjs,Svelte,Svelte 3,Rxjs Observables,Svelte Store,如何在Svelte中使用RXJs主题类存储变量?您可以使用带有$prefix的Svelte中的Subject变量。但是当您将变量绑定到输入时,它会抛出一个异常:“Error:name.set不是函数”,因为Subject类型没有set方法。您可以使用RxJs Subject,就像在Svelte中使用store变量一样,如下例所示 <script> import {Subject} from "rxjs"; let name = new S

如何在Svelte中使用RXJs主题类存储变量?您可以使用带有$prefix的Svelte中的Subject变量。但是当您将变量绑定到输入时,它会抛出一个异常:“Error:name.set不是函数”,因为Subject类型没有set方法。

您可以使用RxJs Subject,就像在Svelte中使用store变量一样,如下例所示

<script>
    import {Subject} from "rxjs";
    
    let name = new Subject();
    setTimeout(()=>{name.next("text")}, 1000);
</script>

<h1>Hello {$name}!</h1>
要解决此问题,可以使用一个简单的技巧将set方法添加到Subject类:)


从“rxjs”导入{Subject};
Subject.prototype.set=函数(值){
这个。下一个(值);
}
让name=newsubject();
$name=“Ali”;
$:console.log($name);
你好{$name}!
中的示例代码
<script>
    import {Subject} from "rxjs";
    
    let name = new Subject();
    $: console.log($name);  
</script>

<h1>Hello {$name}!</h1>
<input bind:value={$name} />
<script>
    import {Subject} from "rxjs";
    
    Subject.prototype.set = function (value) {
            this.next(value);
    }
    
    let name = new Subject();
    $name = "Ali";
    $: console.log($name);  
</script>

<h1>Hello {$name}!</h1>
<input bind:value={$name} />