手动触发Bacon.js流更新?

时间:2015-05-19 16:20:55

标签: javascript reactjs frp bacon.js

我对FRP和bacon.js都很陌生,所以我可能会做一些非常愚蠢的事情。

测试应用有一个textarea和一个提交按钮;提交按钮将值添加到列表中,每次有更改时我都会使用React显示列表。以下是代码:https://gist.github.com/svileng/1f3702df855b50ed2f5e

的要点

我试图修复的错误是我可以多次单击提交按钮,并且textarea中的最后一个值会不断添加到列表中。问题(我猜)是在第18行,我手动清除textarea的值。因此,事件流newCommentValueS和属性newComment不会更新,最后一个值会挂起。

我该如何解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:2)

解决此问题的一种方法是使用bacon.jquery中的textFieldValue。它创建了一个Model,它是可以写入的Property的扩展。您的代码将类似于:

var newCommentValueM = Bacon.$.textFieldValue("#new-comment", "")
var newComment = newCommentValueM.filter(v => v.length > 0)

var commentAdded = Bacon.when(
    [newComment, buttonClickS], (comment, click) => {
        console.log("Submit comment: " + comment)
        newCommentValueM.set("")
        return comment
    }
)