Skip to content

1125

工作

需求:输入框查询搜索

常用思路:

js
function App() {
    
    const onSearch = (keyword: string) => {
        const params = { keyword }
        dispatch({ type: 'xxx/searchList', payload: { params }})
    }
    
    return (
    <div>
    	<Input.Search onSearch={() => onSearch(keyword)} />
    </div>
    )
}

新思路:

js
function App() {
    const [keyword, setKeyword] = useState('')
    const getData =  useCallback(() => {
        // 发送请求
        dispatch({ type: 'xxx/searchList', payload: { params }})
    }, [keyword])
    
    useEffect(() => {
        getData();
    }, [getData])
    
    const onSearch = (keyword: string) => {
        setKeyword(keyword)
    }
    
    return (
    <div>
    	<Input.Search onSearch={() => onSearch(keyword)} />
    </div>
    )
}

刚开始我还奇怪,keywod 改变后居然没有调用 发送请求的方法,但是页面能够正常发送请求 ;而且 keyword 并没有直接作为 useEffect 发送请求的依赖;

原来,这里的调用链是这样:

Input.onSearch --> change keyword --> change method getData --> trigger useEffect --> getData() --> ajax --> getList

这里,参数不止有 keyword, 还有其他如分页信息等;

使用这种写法,代码量少,看着也【高级感 满满】,后续也方便拓展——直接加在依赖上即可~~

反思

好文推荐

有感好文

项目推荐

值得学习的项目

面经相关

八股文相关

Gitalking ...

Released under the MIT License.