@@ -251,15 +251,18 @@ let make = (
251251 // [2] Search exactly matches an item - trigger a route change, and allow the EFFECT to update the view state.
252252 // [3] Search does not match an item - immediately update the view state to show filtered items.
253253 let onSearchValueChange = value => {
254+ Console .log2 ("value changed" , value )
254255 switch value {
255- | "" => navigate ("/syntax-lookup" )
256+ | "" =>
257+ setState (_ => ShowAll )
258+ navigate ("/syntax-lookup" )
256259 | value =>
257260 switch findItemByExactName (value ) {
258261 | None => {
259262 let filtered = searchItems (value )
260263 setState (_ => ShowFiltered (value , filtered ))
261264 }
262- | Some (item ) => ReactRouter . navigate ("/syntax-lookup/" ++ item .id )
265+ | Some (item ) => navigate ("/syntax-lookup/" ++ item .id )
263266 }
264267 }
265268 }
@@ -333,11 +336,13 @@ let make = (
333336 })
334337 }
335338
336- let (searchValue , completionItems ) = switch state {
337- | ShowFiltered (search , items ) => (search , items )
338- | ShowAll => ("" , allItems )
339- | ShowDetails (item ) => (item .name , [item ])
340- }
339+ let (searchValue , completionItems ) = React .useMemo (() =>
340+ switch state {
341+ | ShowFiltered (search , items ) => (search , items )
342+ | ShowAll => ("" , allItems )
343+ | ShowDetails (item ) => (item .name , [item ])
344+ }
345+ , [state ])
341346
342347 let onSearchClear = () => {
343348 onSearchValueChange ("" )
0 commit comments