【问题标题】:How to remove value from array using index (Ant Design specific)?如何使用索引(特定于 Ant Design)从数组中删除值?
【发布时间】:2018-08-14 08:58:59
【问题描述】:

我正在使用 ReactJs 和 Ant Design 创建一个问卷类型的表单。这是How to create a questionnaire type form using Ant Design?的后续问题

现在我成功地添加了新问题及其各自的答案,但没有删除它们。假设我添加了三个问题,当我试图删除其中任何一个问题时,它总是删除最后一个问题。移除相关代码如下:

remove = k => {
    console.log(k);
    const { form } = this.props;
    // can use data-binding to get
    const keys = form.getFieldValue("keys");
    // We need at least one passenger
    if (keys.length === 1) {
      return;
    }
    keys.splice(k, 1);
    // can use data-binding to set
    form.setFieldsValue({
      keys: keys
    });
    console.log(keys);
  };

完整的代码可以在demo on codesandbox.io找到。

【问题讨论】:

    标签: javascript reactjs antd


    【解决方案1】:

    我过去做过类似的事情。去掉了 antd 的 remove 的样板文件,取而代之。每次添加一行时,我都会将该行(对象)推送到 formRows 数组,然后像这样删除:

      remove = key => {
        const newRows = this.state.formRows.filter(r => r.key !== key)
        this.setState(
          prev => ({
            formRows: newRows
          })
        )
      }
    

    【讨论】:

    • 微妙,但如果你使用回调方法,你不妨过滤prev.formRows,所以它在运行时使用最新的数组而不是过时的引用,否则使用回调方法没有意义跨度>
    • 谢谢,但是如果我使用this.props.form.setFieldsValue 而不是setState 会怎样?
    猜你喜欢
    • 2013-11-19
    • 1970-01-01
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多