Javascript redux表单中字段的相同名称

Javascript redux表单中字段的相同名称,javascript,reactjs,redux,react-redux,redux-form,Javascript,Reactjs,Redux,React Redux,Redux Form,我正在处理一个评论部分,并使用redux表单进行输入。我只有一个字段组件用于获取输入。但是当我在输入框中输入时,所有的输入框都被相同的值填充。我知道这是因为所有这些输入框都有相同的名称。但我只想将值填充到选定的输入框中。我该怎么做 以下是我的组件: import { compose } from "redux"; import { connect } from "react-redux"; import React, { Component } from "react"; import { Fi

我正在处理一个评论部分,并使用redux表单进行输入。我只有一个字段组件用于获取输入。但是当我在输入框中输入时,所有的输入框都被相同的值填充。我知道这是因为所有这些输入框都有相同的名称。但我只想将值填充到选定的输入框中。我该怎么做

以下是我的组件:

import { compose } from "redux";
import { connect } from "react-redux";
import React, { Component } from "react";
import { Field, reduxForm } from "redux-form";

import { addComment, fetchPosts } from "../../../actions/FeedPost";
import "./FeedCommentsInput.css";
import TextareaAutosize from "react-textarea-autosize";

class FeedCommentsInput extends Component {
  renderField = field => {
    const { touched, error } = field.meta;
    const className = `comment-input-box ${
      touched && error ? "red-border__error-comment" : ""
    }`;
    return (
      <TextareaAutosize
        {...field.input}
        placeholder={field.placeholder}
        type={field.type}
        className={className}
      />
    );
  };

  onSubmit = formProps => {
    const { postid } = this.props;
    this.props.addComment(formProps, postid);
  };

  render() {
    const { handleSubmit } = this.props;

    return (
      <div>
        <form onSubmit={handleSubmit(this.onSubmit)}>
          <Field
            name="text"
            component={this.renderField}
            type="text"
            placeholder="Enter your Comment"
          />
          <button type="submit">Submit</button>
        </form>
      </div>
    );
  }
}

const validate = values => {
  const errors = {};

  if (!values.comment) errors.comment = "Please Enter Something";

  return errors;
};

export default compose(
  connect(
    null,
    { addComment, fetchPosts }
  ),
  reduxForm({ validate, form: "commentbox" })
)(FeedCommentsInput);
从“redux”导入{compose};
从“react redux”导入{connect};
从“React”导入React,{Component};
从“redux表单”导入{Field,reduxForm};
从“../../../actions/FeedPost”导入{addComment,fetchPosts}”;
导入“/FeedCommentsInput.css”;
从“react textarea autosize”导入textarea autosize;
类FeedCommentsInput扩展了组件{
renderField=字段=>{
const{toucted,error}=field.meta;
const className=`注释输入框${
触摸错误(&R):“红色边框错误注释”:”
}`;
返回(
);
};
onSubmit=formProps=>{
const{postid}=this.props;
this.props.addComment(formProps,posted);
};
render(){
const{handleSubmit}=this.props;
返回(
提交
);
}
}
常量验证=值=>{
常量错误={};
如果(!values.comment)出现错误。comment=“请输入内容”;
返回错误;
};
导出默认组合(
连接(
无效的
{addComment,fetchPosts}
),
reduxForm({validate,form:“commentbox”})
)(输入);

只需将unique
表单
道具传递给表单组件即可

您的
redux表单
集成将更改为

// No need to configure `form`, because it would be set dynamically via props
reduxForm({ validate })
用法:

<Form form={`commentbox_${uuid}`} />


.

您有许多评论表单,但所有评论框都使用相同的表单(
commentbox
),这会造成问题

您需要使用索引子索引动态创建表单:

const commentForm1 = reduxForm({ validate, form: "commentbox_1" })
const commentForm2 = reduxForm({ validate, form: "commentbox_2" })

这就是为什么我认为在使用复杂的库时,如
reduxForm
建立一个基本案例并使其正常工作是很重要的。我的意思是,我将首先实现一个简单的表单,确保它能够正常工作,然后再继续编写您编写的大量代码,以便稍后发现某些东西工作不正常

例如,我会从以下内容开始:

class FeedCommentsInput extends Component {
  render() {
    return ( 
    <div>
       <form onSubmit={this.props.handleSubmit(values => console.log(values))}>
           <Field type=“text” name=“feedTitle” component=“input” />
        <button type=“submit”>Submit</button>
       </form>
    </div>
    );
  }
}

export default reduxForm({ form: 'FeedCommentsInput' })(FeedCommentsInput);
类FeedCommentsInput扩展组件{
render(){
报税表(
console.log(值))}>
提交
);
}
}
导出默认reduxForm({form:'FeedCommentsInput'})(FeedCommentsInput);
没有验证,没有其他,只是这个简单的设置,当然包括导入和导出语句。现在有了这个设置,当用户提交表单时,redux表单传递给我们的函数将被调用,它将在内部调用我在提交时传递的函数

然后我会进入浏览器,通过添加一些文本并单击submit来测试它,当我这样做时,我会看到一个控制台日志,其中有一个键
feedTitle
,以及我键入的文本的值

简而言之,这几乎就是整个reduxForm流程,我会首先建立它来确保一切正常运行

当我将
onSubmit
处理程序添加到表单中,然后在其中调用
handleSubmit()
并提供我的arrow函数时。每当用户提交表单时,将自动调用arrow函数


控制台日志中的values对象是输入的文本,对象的键是添加到字段组件中的
名称。这就是为什么
字段
组件所需的
名称
属性也可以用来帮助您的原因。如果您没有看到
feedTitle
,那么在您继续编写验证代码等之前,您就会知道某些东西工作不正常。

您所说的
是什么意思所有的输入框都被填满了
,我只能看到一个文本框here@mbeso他在同一页上多次填写同一份表格。一篇帖子有很多评论。哦,我明白了,这个问题有点奇怪:)看起来你找到了你问题的答案,我建议将来在询问关于
reduxForm
的状态时,包括你的
reducers/index.js
文件,这样我们就可以看到你是如何设置
formReducer
@Daniel的,好的,我会记住这个事实上这和我的答案是一样的。两次发布相同的答案有什么意义?:)我在10分钟内完成了我的回答,当我开始评论时,我没有看到你的aswer=)@JordanEnev,正如你所知,帖子会被审核,所以我不会担心。如果有什么疏忽,就会得到解决。