首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Purescript Halogen中实现类似自动递增计数器的功能

如何在Purescript Halogen中实现类似自动递增计数器的功能
EN

Stack Overflow用户
提问于 2019-06-10 03:02:52
回答 1查看 208关注 0票数 2

在像React这样的东西中给出一个非常简单的增量组件:

代码语言:javascript
复制
class Increment extends React.Component {
  constructor(props){
    super(props)
    this.state = {
      value: props.value
    }
  }

  componentDidMount() {
    setInterval(() => {
      this.setState(({ value }) => ({ value: value + 1 }))
    }, 1000);
  }

  render(){
    return (
      <p>{ this.state.value }</p>
    );
  }
}


ReactDOM.render(<Increment value={0} />, document.getElementById('root'))

这如何转化为Purescript的卤素?在网上浏览各种东西,我还没有找到任何例子,我可以工作到我自己的原型。我知道Effect.Time公开了setInterval,但是我如何使用它来触发一些可以让我更新状态的东西(在受控的操作中,通过handleAction)。

我正在尝试将一个应用程序从Elm迁移到卤素,在该应用程序中,它依赖于subscriptions函数来实现一些关键的功能,以更新与用户直接输入无关的应用程序状态。如果卤素有类似的功能(我见过subscribe,尽管这似乎与父/子组件之间的通信有关,但我可能误解了这一点……)被指向它将是一件很好的事情。

EN

回答 1

Stack Overflow用户

发布于 2019-06-11 12:09:40

这是一个用卤素写的counter例子,代码在purescript-halogen-storybook example

要使其自动递增,可以在初始化处理程序中添加一个自循环函数。

代码语言:javascript
复制
loop = 
  H.liftAff $ Aff.delay $ Aff.Milliseconds 1000.0
  H.modify_ \s -> s { value = s.value + 1 }
  loop

handleAction Initialize = loop

查看官方的lifecycle示例,了解如何使用initialize

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56517567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档