如何访问其他字段中的字段数据 [英] How to access field data in other field
问题描述
我有一个使用 Formik
的模态表单.这里有两张图片显示了可以用开关切换的表单的两种状态.最初我将文本填充到可以动态添加并存储为数组的字段中.
第二张图显示了我如何切换到 textarea
.在那里,您还可以添加带有逗号的文本,这些文本将变成一个数组.
有什么方法可以从第一个屏幕的输入字段中填充数据,切换到 textarea
并访问已经输入的数据.
我知道 formik 会将这种状态保留在某处.但目前这些字段有一个单独的状态.这是我的组件:
class ModalForm extends React.Component {构造函数(道具){超级(道具);this.state = {禁用:真,};}onChange = () =>{this.setState({禁用:!this.state.disabled,});};使成为() {无功{可见=假,取消,根据要求,提交,设置订阅者类型,编辑,订阅类型字符串,测试,选定的盖茨,} = this.props;const { gateId } = selectedGates.length &&选定的门[0];const handleSubmit = 值 =>{控制台日志(值);onRequest &&onRequest({ gateId, ...values });};const { 禁用 } = this.state;返回 (<模态页脚={空}可关闭的title="Список абонентов для выбранного гейта"可见={可见}onCancel={onCancel}onOk={handleSubmit}关闭时销毁宽度=600像素"><样式描述><Switch onChange={this.onChange}/><StyledLabel>массовый ввод</StyledLabel></StyledDescription><福米克initialValues={{ abonents: [''] }}onSubmit={handleSubmit}render={({ values, handleChange }) =>(<表格>{禁用?(<字段数组名称=abonents"渲染={arrayHelpers =>{返回 (<div>{values.abonents.map((value, index) => (<div key={index}><我的文本输入placeholder="Абонент ID"name={`abonents.${index}`}价值={价值}onChange={handleChange}/><按钮形状=圆圈"图标=删除"onClick={() =>{arrayHelpers.remove(index);}}/>
))}<Button type="dashed" onClick={() =>arrayHelpers.push('')}><Icon type="plus"/>Добавить абонента</按钮>
);}}/>) : (<样式字段placeholder="Введите ID абонентов через запятую"名称=消息"组件=文本区域"/>)}<页脚><Button type="primary" htmlType="submit">Запросить</按钮></页脚></表格>)}/></模态>);}}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.0.0/umd/react.production.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.0.0/umd/react-dom.production.min.js"></script>
很简单,formik 将值存储在 values.abonents
中,因此你可以在 textarea 中使用它
let { Formik, Form, Field, ErrorMessage, FieldArray } = window.Formik;功能应用(){const [disabled, setDisabled] = React.useState(false)//一些样板代码函数提交(值){console.log('提交', 值)}返回 (<福米克initialValues={{ abonents: [] }}onSubmit={提交}render={({ values, handleChange, setFieldValue }) =>(<表格><字段数组名称='abonents'渲染={arrayHelpers =>{如果(!禁用){返回 (<textarea onChange={(e) =>{e.preventDefault()setFieldValue('abonents', e.target.value.split(', '))}} value={values.abonents.join(', ')}></textarea>)}返回 (<div>{values.abonents.map((value, index) => (<div key={index}><输入placeholder='Абонент ID'name={`abonents.${index}`}价值={价值}onChange={handleChange}/><button onClick={(e) =>{e.preventDefault()arrayHelpers.remove(index)}}>——按钮>
))}<button onClick={(e) =>{e.preventDefault()arrayHelpers.push('')}}>+按钮>
)}}/><button type='submit'>提交</button>