当前位置: 首页 > 知识库问答 >
问题:

清除处于状态的对象中的键

长孙诚
2023-03-14

我有一个组件,它作为一个道具发送一个方法来改变表单的输入值(像任何基本表单一样)。在onChange开始工作后,我决定添加一个clear按钮来一次清除所有输入值,因此我创建了一个方法来清除所有输入。

示例:

class ComponentName extends Component {
  constructor(props) {
    super(props);
    this.state = {
      formInputs: {
        inputOne: "",
        inputTwo: "",
        inputThree: ""
      }
    };
  };

  handleOnChange = (event) => {
    const { target: { name, value } } = event;
    this.setState(previousState => {
      return { formInputs: { ...previousState.formInputs, [name]: value } };
    });
  };

  clearInputs = () => {
    /* this is problematic, because I'm setting the input from defined to undefined */
    this.setState({ formInputs: {} });
  };

  render() {
    const { formInputs } = this.state;
    return (
      <Form 
        handleOnChange={this.handleOnChange}
        clearInputs={this.clearInputs}
        formInputs={formInputs}
      />
    );
  };
};

像上面的方法那样清除会产生一个错误,因为我要移除state中的键,而表单输入的值是针对state的。没问题,所以我想,我只需要将setState中的所有输入添加到一个空字符串,如:this.setState({forminputs:{inputone:“”,inputtwo:“”,inputthree:“”}});which works。但是我有很多输入需要清除,所以这种方法可能也不是最有效的。话虽如此,是否有更有效的方法来清除状态中的“ForminPuts”对象中的每一个?

共有1个答案

龚迪
2023-03-14

您可以在组件外部(也可以在组件内部)的单独变量中定义初始状态,并使用它不仅初始化状态,还可以在clearinputs函数中将状态重置为它。

 类似资料:
  • 我在JS对象(不是数组)中有一个

  • 本文向大家介绍BootStrap Select清除选中的状态恢复默认状态,包括了BootStrap Select清除选中的状态恢复默认状态的使用技巧和注意事项,需要的朋友参考一下 PC端项目中经常会出现大量的数据列表页面,涉及到下拉框选择筛选条件; 当时用到bootstrap-select下拉框时该如何点击重置按钮就清除下拉框的选中状态呢? 如【图1】 当我们选择摸一个条件之后 如【图2】 此时点

  • 问题内容: 我正在尝试清除组件,但找不到es6语法的参考。我正在使用: 但是,这不适用于es6类语法。 我将如何获得相同的结果? 问题答案: 据我所知,React组件不会保留初始状态的副本,因此您只需要自己做即可。 请注意,该行要求您永远不要改变状态,否则您将污染并且无法进行重置。如果无法避免突变,则需要在构造函数中创建的副本。(或按照进行功能。) 最后,建议您使用而不是。

  • 我在工作中使用ProcessWindowFunction并保持StateValue。我的目标是将值保持在超过1个窗口的状态,这意味着状态不会在每个窗口的末尾被清除。我有两个问题: 我怎样才能清除状态?有没有设置触发器并用它来清除状态的选项?(当在ProcessFunction中使用状态时,我能够设置触发器以执行此清除,即使没有新事件) 有没有一种方法来构建一个单元测试来检查我的ProcessWin

  • 是否可以清除数据流中的当前水印? 一个月长的水印不允许延迟的示例输入: 通常,“2018年9月”的记录会因为时间太晚而被扔掉。当看到消息时,是否有方法以编程方式重置水印状态?

  • 我正在使用kafka处理器API做一些自定义计算。由于某些复杂的处理,DSL并不是最佳的选择。流代码如下所示。 我需要清除一些项目从状态存储基于一个事件来在一个单独的主题。我无法找到正确的方法来使用Processor API连接另一个流,或者通过其他方法来侦听另一个主题中的事件,从而能够触发CustomProcessor类中的清理代码。有没有一种方法可以在处理器API中获取另一个主题中的事件?或者