Reactjs 事件处理程序中带有[name]的PrevState

Reactjs 事件处理程序中带有[name]的PrevState,reactjs,Reactjs,我有两个复选框,我只想与一个事件处理程序一起使用。我怎样才能做到这一点 handleChange = e => { if (e.target.type === "checkbox") { return this.setState(prevState => ({ [e.target.name]: ![prevState.e.target.name] })); } } 编辑: 我正在尝试此操作,但一旦选中复选框,它将不会恢复复选

我有两个复选框,我只想与一个事件处理程序一起使用。我怎样才能做到这一点

 handleChange = e => {
    if (e.target.type === "checkbox") {
      return this.setState(prevState => ({
        [e.target.name]: ![prevState.e.target.name]
      }));
    }
}
编辑:

我正在尝试此操作,但一旦选中复选框,它将不会恢复复选框:

if (e.target.type === "checkbox") { this.setState(prevState => ({ [name]: !prevState[name] })); }

现在还不太清楚你想要实现什么。由于您使用的是复选框,我猜您只是在尝试保存复选框是否选中

在这种情况下,我们可以使用setState的合并语法,并将目标的
选中值分配给它的
名称

   handleChange = e => {
        if (e.target.type === "checkbox") {
          this.setState({ [e.target.name]: e.target.checked });
        }
    }

虽然这不是您的问题,但我仍想指出有关使用setState的两件事:

  • setState没有返回值
  • 使用setState的功能版本时,您将不会收到
    以前的状态
    ,而是
    当前状态

  • 现在还不太清楚你想要实现什么。由于您使用的是复选框,我猜您只是在尝试保存复选框是否选中

    在这种情况下,我们可以使用setState的合并语法,并将目标的
    选中值分配给它的
    名称

       handleChange = e => {
            if (e.target.type === "checkbox") {
              this.setState({ [e.target.name]: e.target.checked });
            }
        }
    

    虽然这不是您的问题,但我仍想指出有关使用setState的两件事:

  • setState没有返回值
  • 使用setState的功能版本时,您将不会收到
    以前的状态
    ,而是
    当前状态

  • 你的州是如何组织的。。。?请参阅,假设
    e.target.name
    解析为
    foo
    prevState
    中的状态将是
    {foo:false}
    [prevState.e.target.name]
    将无法正确解析,因为您没有
    {e:{target:{name:'foo'}}}
    作为
    prevState
    。我想你的意思是
    !prevState[e.target.name]
    如果您试图反转状态中各个输入值的前一个值。我正在尝试此操作,但选中后不会取消选中:if(e.target.type==“checkbox”){this.setState(prevState=>({[name]:!prevState[name]});}您的状态结构如何。。。?请参阅,假设
    e.target.name
    解析为
    foo
    prevState
    中的状态将是
    {foo:false}
    [prevState.e.target.name]
    将无法正确解析,因为您没有
    {e:{target:{name:'foo'}}}
    作为
    prevState
    。我想你的意思是
    !prevState[e.target.name]
    如果您试图反转状态中各个输入值的上一个值。我正在尝试此操作,但选中后不会取消选中:if(e.target.type==“checkbox”){this.setState(prevState=>({[name]:!prevState[name]});}这确实有效,签出此小示例:。如果这对你不起作用,你的问题可能在其他地方。在这种情况下,请提供其他代码。这确实有效,请检查以下小示例:。如果这对你不起作用,你的问题可能在其他地方。在这种情况下,请提供其他代码。