Open vaynevayne opened 1 year ago
修改前, 可否修改的拦截器(autoClearSearchValue === true ) 需要在每一个操作前设置, 这种 case by case 的操作对人的心智负担很大, 容易出现遗漏
const [mergedSearchValue, setSearchValue] = useMergedState('', { value: searchValue !== undefined ? searchValue : inputValue, postState: (search) => search || '', }); if (formatted) { const newRawValues = Array.from(new Set<RawValueType>([...rawValues, formatted])); triggerChange(newRawValues); triggerSelect(formatted, true); if(autoClearSearchValue) setSearchValue(''); }
修改后, 把拦截器放到整个useMergedState 里, 这样无论在哪里调用,都可以走拦截判断, 可以大大减少bug数
const [mergedSearchValue, setSearchValue] = useMergedState('', { value: searchValue !== undefined ? searchValue : inputValue, postState: (search,prevSearch) => (autoClearSearchValue ? search: prevSearch) || '', }); if (formatted) { const newRawValues = Array.from(new Set<RawValueType>([...rawValues, formatted])); triggerChange(newRawValues); triggerSelect(formatted, true); setSearchValue(''); }
目的,减少组件bug,
The latest updates on your projects. Learn more about Vercel for Git ↗︎
修改前, 可否修改的拦截器(autoClearSearchValue === true ) 需要在每一个操作前设置, 这种 case by case 的操作对人的心智负担很大, 容易出现遗漏
修改后, 把拦截器放到整个useMergedState 里, 这样无论在哪里调用,都可以走拦截判断, 可以大大减少bug数
目的,减少组件bug,