作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个文本框,在显示字符时速度非常慢。
我曾经观察到一个与之相关的 Stackoverflow 异常。
我认为性能问题与准备门户值有关:
Sources.InputAccessId _ ->
( { model | portal = portal }, sourceCmd )
每次输入一个字符,我都会复制并修改一条新的门户记录,这会消耗更多内存。
代码可以在下面找到。
主要:
onSourcesUpdated : Sources.Msg -> Model -> ( Model, Cmd Msg )
onSourcesUpdated subMsg model =
let
pendingPortal =
model.portal
provider =
pendingPortal.provider
profile =
provider.profile
source =
pendingPortal.newSource
( sources, subCmd ) =
Sources.update subMsg
{ profileId = profile.id
, platforms = model.platforms
, source = { source | profileId = profile.id }
, sources = profile.sources
}
sourceCmd =
Cmd.map SourcesUpdated subCmd
pendingProvider =
{ provider | profile = { profile | sources = sources.sources } }
portal =
{ pendingPortal | newSource = sources.source, provider = pendingProvider }
in
case subMsg of
Sources.InputAccessId _ ->
( { model | portal = portal }, sourceCmd )
...
Sources.elm:
update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
let
source =
model.source
in
case msg of
InputAccessId v ->
( { model | source = { source | accessId = v } }, Cmd.none )
...
如何在每次事件发生时传递状态而不复制整个结构?
最佳答案
你可能想用像这样的库来消除这些事件:elm-debounce
不过,去抖动的结果是某些事件将被丢弃,因此当用户完成输入/与页面交互时(更准确地说,在 - 可配置 - 超时之后),您只会得到一个对所有事件求和的事件。
关于elm - 如何在不为每条消息复制整个结构的情况下传递状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47379812/
我是一名优秀的程序员,十分优秀!