代码之家  ›  专栏  ›  技术社区  ›  Elvira

使用开关设置状态的替代方法

  •  0
  • Elvira  · 技术社区  · 6 年前

    我在React中创建了一个隐藏过滤器的函数。 我在一个容器组件中有多个过滤器组件,每个过滤器组件都有一个相应的状态来添加一个隐藏/显示css类。

    hideFilters(clickedFilter){
      switch(clickedFilter.toLowerCase()){
        case "assortiment":
          this.setState({
              "assortiment": "show",
              "taal":"hide",
              "bestelbaar":"hide",
              "verschijningsjaar":"hide",
              "verschijningsvorm":"hide",
              "nur":"hide"
          });
          break;
        case "bestelbaar":
          this.setState({
              "bestelbaar":"show",
              "assortiment": "hide",
              "taal":"hide",
              "verschijningsjaar":"hide",
              "verschijningsvorm":"hide",
              "nur":"hide"
          });
          break;
        case "taal":
          this.setState({
              "taal":"show",
              "assortiment": "hide",
              "bestelbaar":"hide",
              "verschijningsjaar":"hide",
              "verschijningsvorm":"hide",
              "nur":"hide"
          });
          break;
        case "verschijningsvorm":
          this.setState({
              "verschijningsvorm":"show",
              "assortiment": "hide",
              "bestelbaar":"hide",
              "verschijningsjaar":"hide",
              "taal":"hide",
              "nur":"hide"
          });
          break;
        case "verschijningsjaar":
          this.setState({
              "verschijningsjaar":"show",
              "assortiment": "hide",
              "bestelbaar":"hide",
              "verschijningsvorm":"hide",
              "taal":"hide",
              "nur":"hide"
          });
          break;
        default:  console.log('hi')
      }
    }
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   Sagar Jajoriya    6 年前
    this.defaultStates = {
      "assortiment": "hide",
      "taal":"hide",
      "bestelbaar":"hide",
      "verschijningsjaar":"hide",
      "verschijningsvorm":"hide"
    }
    
    hideFilters(clickedFilter){
      this.setState({
        ...this.defaultStates,
        [clickedFilter.toLowerCase()]: "show"
      })
    }