【问题标题】:Adding multiple <Fields /> in redux-form在 redux-form 中添加多个 <Fields />
【发布时间】:2018-03-23 16:44:43
【问题描述】:

我应该在&lt;Field/&gt; 中同时输入问题和答案。因为 redux-form 文档告诉我使用&lt;Fields/&gt;

<Fields names={['question1', 'answer1']}
    component={this.renderInputGroupField} />
<Fields names={['question2', 'answer2']}
    component={this.renderInputGroupField} />
<Fields names={['question3', 'answer3']}
    component={this.renderInputGroupField} />

用这个渲染字段

renderInputGroupField(fields){
    return(
        <div className="form-group d-block">
            <div className="form-group input-group">
                <select className="form-select" >
                    <option>Multiple-Choice</option>
                    <option>Open-Ended</option>
                </select>
                <input {...fields.question1.input}
                    type="text"
                    className="form-input"
                    placeholder="Type your question..."/>
            </div>
            <div className="form-group">
                <input {...fields.answer1.input}
                    type="text"
                    className="form-input"
                    placeholder="Comma-separated answer choices" />
            </div>
        </div>
    );
}

要使renderInputGroupField 工作,我应该将{...fields.answer1.input} 添加到&lt;input /&gt; 中,如上所述。这是问题所在。传递到字段中的名称不同,我找不到将...fields.answer1.input 动态更改为...fields.answer2.input 的方法。

我不确定我是否能够正确解释。感谢您的帮助。

【问题讨论】:

    标签: javascript reactjs react-redux redux-form


    【解决方案1】:

    因此,您似乎想将 renderInputGroupField 用作可重用组件。快速测试一下,看起来 redux-form 也发回了你最初给它的名字列表。您应该能够使用数组中的索引访问您在名称数组中列出的字段的属性,如下所示。

    return(
      <div className="form-group d-block">
        <div className="form-group input-group">
          <select className="form-select">
            <option>Multiple-Choice</option>
            <option>Open-Ended</option>
          </select>
          <input {...fields[fields.names[0]].input}
                 type="text"
                 className="form-input"
                 placeholder="Type your question..."/>
        </div>
        <div className="form-group">
          <input {...fields[fields.names[1]].input}
                 type="text"
                 className="form-input"
                 placeholder="Comma-separated answer choices" />
        </div>
      </div>
    );
    

    【讨论】:

    • 非常感谢。我试过fields.names[0] 来定位这个名字,但看起来我写的方式是错误的。您的回答解决了问题。
    • 很高兴能帮上忙!
    • 我想过将整个问题放在问题“q”对象下。因此,在我将传递names={['q.question1', 'q.answer1']} 的字段中,它如何更改{...fields[fields.names[0]].input}。因为 names[0] 现在包含 'q.question1' 和一些如何 q。应切出以输入为目标。
    • 您可以将其更改为 {...fields.q[fields.names[0].split('.')[1]]} 用于问题和 {...fields.q[ fields.names[1].split('.')[1]]} 回答。
    猜你喜欢
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2016-12-05
    相关资源
    最近更新 更多