react-component / util

Common Utils For React Component
util.vercel.app
MIT License
623 stars 178 forks source link

feat: [useMergedState] inject prevState to postState(next,prev) #450

Open vaynevayne opened 1 year ago

vaynevayne commented 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,

vercel[bot] commented 1 year ago

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
util ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jun 10, 2023 5:44am