Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.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 是否直接更新useState对象密钥?_Javascript_Reactjs_State_React Hooks - Fatal编程技术网

Javascript 是否直接更新useState对象密钥?

Javascript 是否直接更新useState对象密钥?,javascript,reactjs,state,react-hooks,Javascript,Reactjs,State,React Hooks,我想将comment的键值更新为新值,同时保持其他键值不变。我知道我可能需要扩频器。。。但我不确定确切的语法。要实现这一点,我需要在setResource中添加什么 const VideoPage = () => { const [state, setResource] = useState( { video: 'placeholder' loading: 'placeholder' comment: 'placeholder' }

我想将comment的键值更新为新值,同时保持其他键值不变。我知道我可能需要扩频器。。。但我不确定确切的语法。要实现这一点,我需要在setResource中添加什么

const VideoPage = () => {
  const [state, setResource] = useState(
    {
      video: 'placeholder'
      loading: 'placeholder'
      comment: 'placeholder'
    }
  )
  const funct = () => {
    setResource()
  }
}

如果你想保留该州的其他部分,你应该这样做:

setResource(prevState => ({
    ...prevState,
    comment: "new Value",
}))

因为状态的setter函数不会像旧的setState方法那样合并其他值。这就是为什么你应该做一个。

如果你想保留该州的其他部分,你应该这样做:

setResource(prevState => ({
    ...prevState,
    comment: "new Value",
}))

因为状态的setter函数不会像旧的setState方法那样合并其他值。这就是为什么您应该按原样展开对象,然后更新所需的值

const VideoPage = () => {
  const [state, setResource] = useState(
    {
      video: 'placeholder'
      loading: 'placeholder'
      comment: 'placeholder'
    }
  )
  const funct = () => {
    setResource({...state, comment:'Hello'})
  }
}

按原样展开对象,然后更新所需的值

const VideoPage = () => {
  const [state, setResource] = useState(
    {
      video: 'placeholder'
      loading: 'placeholder'
      comment: 'placeholder'
    }
  )
  const funct = () => {
    setResource({...state, comment:'Hello'})
  }
}

我不太确定直接传播现状是不是正确的方法。最后,我们将使用当前状态并使用新值更新它。使用功能更新可能是一个更好的主意。我不太确定直接传播当前状态是正确的方法。最后,我们将使用当前状态并使用新值更新它。使用功能更新可能是一个更好的主意。一开始没有注意到你的链接。我会仔细阅读。@devserkan如果我想更新两个值1视频和2评论,那么我是否也需要为视频编写两次相同的代码?@cakePHP,您可以使用相同的代码更新视频。只需添加属性和新值。一开始没有注意到您的链接。我会仔细阅读。@devserkan如果我想更新两个值1视频和2评论,那么我是否也需要为视频编写两次相同的代码?@cakePHP,您可以使用相同的代码更新视频。只需添加属性和新值。