Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 嵌套对象的设置状态_Javascript_Reactjs_Jsx - Fatal编程技术网

Javascript 嵌套对象的设置状态

Javascript 嵌套对象的设置状态,javascript,reactjs,jsx,Javascript,Reactjs,Jsx,我有一个嵌套对象作为状态,在组件中有一个窗体。我想在用户每次在表单中输入内容时更新状态,为了避免为每个输入创建多个函数,我想使用switch创建一个函数 使用开关创建单个函数是一个好主意吗 如何更新对象的单个嵌套元素 我尝试了以下代码,但不起作用: class App extends Component { constructor(props) { super(props) this.state = { minutes: null, i

我有一个嵌套对象作为状态,在组件中有一个窗体。我想在用户每次在表单中输入内容时更新状态,为了避免为每个输入创建多个函数,我想使用switch创建一个函数

  • 使用开关创建单个函数是一个好主意吗
  • 如何更新对象的单个嵌套元素
  • 我尝试了以下代码,但不起作用:

    class App extends Component {
      constructor(props) {
          super(props)
          this.state = {
            minutes: null,
            interests: {
              business: false,
              code: false,
              design: false
            },
            errors: []
          }
      }
    
      updatePreferences = (preferenceName, enteredValue) => {
        switch (preferenceName) {
          case preferenceName === "minutes":
            this.setState({minutes: enteredValue})
            return
          case preferenceName === "business":
            this.setState({interests.business: !this.state.interests.business})
            return
          case default:
            return
        }
    
      }
    }
    

    当然你可以使用
    开关
    ,一点问题都没有

    并使用
    setState
    更新嵌套对象。参见示例

      updatePreferences = (preferenceName, enteredValue) => {
         switch (preferenceName) {
          case preferenceName === "minutes":
            this.setState({minutes: enteredValue});
            return
          case preferenceName === "business":
            this.setState({...this.state, interests: {
              ...this.state.interests,
              business: !this.state.interests.business
            }});
            return
          default:
            return
        }
    
      }
    

    伟大的只是
    默认值
    而不是
    案例默认值
    对不起,错过了