【问题标题】:React, check state if key pair exists depending on parameter反应,根据参数检查密钥对是否存在
【发布时间】:2018-06-05 18:55:12
【问题描述】:

所以我试图弄清楚如何使用一种包罗万象的功能来减少我的应用程序中的膨胀。我有一堆通过状态处理的对话框窗口,类似于:

toggleSettingsDialogue = () => {
    this.setState({settingsOpen: !this.state.settingsOpen});
}

我正在尝试将这个功能简化为一个,该功能会针对每个额外的对话框重复。我的想法是传入两个参数——一个用于要打开的对话框,另一个用于定义该对话框的状态——真或假。

问题是,我一直在弄清楚如何检查传递的第一个参数(即处于状态的对话框窗口的名称)是否存在。

假设我们有一个状态...

state = {
     diagSettingsOpen: false,
     diagAddItemOpen: false
}

如何检查函数内部作为参数传递的任何字符串是否确实存在,然后如果匹配,则使用该键设置状态?

【问题讨论】:

    标签: javascript reactjs ecmascript-6 babeljs


    【解决方案1】:
     toggleSettingsDialogue = key => {
       if(key in this.state)
         this.setState(({[key]: val}) => ({[key]: !val}));
    }
    

    【讨论】:

    • @IkeDoud 很高兴为您提供帮助 :)
    【解决方案2】:

    您可以通过以下方式进行检查 -

    let state = {
         diagSettingsOpen: false,
         diagAddItemOpen: false
    }
    
    function setState(stateName, value) {
        if (state.hasOwnProperty(stateName)) {
            state[stateName] = value;
        } else {
            console.log("invalid state");
        }
    }
    
    setState("diagSettingsOpen" ,true);
    console.log(state);
    setState("diagSettingsClose" ,true);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-07
      • 2014-09-14
      • 1970-01-01
      相关资源
      最近更新 更多