use-cross-search@0.1.0
2021-06-20
19:51:17 解決
19:35:29 useState()に格納する函数をsearchだけにした
updateは今のところ使わない
普通に渡すとcallback 函数と認識されてしまう
2021-06-19
20:56:29 resultsが{result: []}になってた
毎回1から検索し直す必要なくない?
「aa」の検索結果は「aapple」の検索結果の部分集合なのだから、「aapple」は「aa」の検索結果から更に絞り込みをかければいい
検索結果が10万件とかだったらあまり効果はないだろうが、100件にまで絞られた状態なら、最初から検索し直すより100件の中から検索したほうがずっと速い
dependencies
code:script.js
import {useState, useEffect, useCallback} from '../preact@10.5.13/hooks.js';
import {useLoader} from '../use-loader/script.js';
import {crossSearch} from '../advanced-link-searcher@0.2.0/script.js';
export function useCrossSearch(name, query, {icon, projectIds, limit} = {}, deps = []) {
const {loading} = useLoader(() => (async () => {
const funcs = await crossSearch(name, projectIds, {icon});
await funcs.update();
setSearch(() => funcs.search);
const {loading: searching} = useLoader(() => (async () => {
if (!search) return;
const {executed, result} = await search(query, {limit});
if (executed) setResults(result.result);
return {
searching,
loading,
results,
}
}