直接更新useState对象键吗?

时间:2019-12-13 15:10:27

标签: javascript reactjs state react-hooks

我想将我的comment的键值更新为新值,同时保持其他键不变。我知道我可能需要传播运算符...但是我不确定确切的语法。我需要放入setResource()来完成此操作吗?

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

2 个答案:

答案 0 :(得分:3)

如果要保留状态的其他部分,应执行以下操作:

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

因为状态的setter函数不会合并其他值,例如旧的setState方法。这就是为什么您应该做functional update

答案 1 :(得分:1)

按原样传播对象,然后更新所需的值。

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