多个过滤器的 setState

问题描述

所以我正在构建一个侧边栏来过滤内容

我的状态是这样的。

 const [state,setState] = useState({
    Filters: [
      {
        bpm: 0,price: 0,genreTypeId: 0,},],});

为了让我正确过滤,我需要将我的有效负载以过滤器所在的相同状态发送到 ajax,一个数组对象,每个过滤器都是一个对象,每个属性的值不能超过一个

如何设置我的 bpmHandler 以便它在 bpm 为 0 或 null 时首先设置状态,然后对于每个额外的 bpm 值,它在过滤器中创建另一个对象?

我尝试过过滤、映射和拼接,但我仍然不确定逻辑本身。

我目前在使用 bpmHandler

const bpmHandler = (e,index) => {
    _logger(e);
    _logger(state.Filters);

    setState((prevstate) => ({
      ...state,Filters: [
        ...prevstate.Filters.splice(0,index),{
          ...state.Filters[index],bpm: e.target.name,price: state.Filters.price,genreTypeId: state.Filters.genreTypeId,...state.Filters.splice(index + 1),}));

我也不反对一个 bpmList,它只保存 bpm 过滤器中的所有值,然后我的 bpmHandler 可以将它映射到我想要的形状,但不确定这是否比仅设置状态更有效跳跃。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)