Elm中onInput事件返回值滞后一个字符问题排查
问题原因
你在Change消息的更新逻辑里,计算过滤列表时使用了更新前的旧searchText值:
Elm的update函数接收的model参数是当前触发消息时的旧状态,你在生成filtered列表时,还没完成对model.searchText的更新,过滤逻辑一直用的是上一次输入的内容,就出现了值滞后一个字符的现象。
修复方案
把Change分支里过滤条件的model.searchText替换成新传入的输入值value即可,修改后的代码如下:
Change value -> let filtered = model.layers |> List.filter (\{ name } -> String.contains (String.toLower value) (String.toLower name) ) in ( { model | searchText = value, filtered = filtered }, Cmd.none )
内容的提问来源于stack exchange,提问作者atomkirk
相关产品推荐
相关产品推荐

