gpt4 book ai didi

javascript - 如何在我的输入数据不填充该数组中的其他输入的情况下编辑动态添加的输入?

转载 作者:行者123 更新时间:2023-11-30 19:38:40 25 4
gpt4 key购买 nike

我有一个 formik根据数组 x 的长度,将 View 映射到两个 input 的表单。 x的长度会根据不同的场景而有所不同。

这是代码。

import React, { Component, Fragment } from "react";
import { Button, TextInput, View, StyleSheet } from "react-native";
import { Formik } from "formik";

class App extends Component {
render() {
const x = [1,2];
return (
<View>
<Formik
initialValues={{ name: "", description: "" }}
onSubmit={values => alert(JSON.stringify(values))}
>
{({ values, errors, handleBlur, handleChange, handleSubmit }) => (
<Fragment>
<TextInput
placeholder="name"
value={values.name}
handleBlur={() => handleBlur("name")}
onChangeText={handleChange("name")}
style={styles.input}
/>
<TextInput
placeholder="description"
value={values.description}
handleBlur={() => handleBlur("description")}
onChangeText={handleChange("description")}
style={styles.input}
/>
{x.map(x => {
return (
<View>
<TextInput key={x}
placeholder={`name`}
value={values.name}
handleBlur={() => handleBlur}
onChangeText={handleChange}
style={styles.input}
/>
<TextInput
placeholder={`description`}
value={values.description}
handleBlur={() => handleBlur(x.toString())}
onChangeText={handleChange}
style={styles.input}
/>
</View>
);
})}
<Button title="submit" onPress={handleSubmit} />
</Fragment>
)}
</Formik>
</View>
);
}
}

当我提交时,我无法让它正常工作。当我输入时,文本也会填充该名称的所有其他输入,例如,如果我输入 description 输入,文本会填充 的所有其他迭代description,我怎样才能让它工作?

看看小吃

HERE

最佳答案

您需要动态创建初始值对象以便提交正常工作,例如:

const x = [1, 2];
const initialFields = { name: "", description: "" };
const extraFields = x.map(num => ({
[`name${num}`]: "",
[`description${num}`]: ""
}));

这可以像这样传递给您的 Formik 表单:

<Formik
initialValues={Object.assign(initialFields, ...extraFields)}
onSubmit={values => alert(JSON.stringify(values))}
>

然后像这样更改动态添加的 TextInputs 以使用这些值:

{x.map(x => {
return (
<View>
<TextInput
placeholder={`name${x}`}
value={values[`name${x}`]}
handleBlur={() => handleBlur(`name${x}`)}
onChangeText={handleChange(`name${x}`)}
style={styles.input}
/>
<TextInput
placeholder={`description${x}`}
value={values[`description${x}`]}
handleBlur={() => handleBlur(`description${x}`)}
onChangeText={handleChange(`description${x}`)}
style={styles.input}
/>
</View>
);
})}

查看 my fork of your CodeSandbox用于工作演示。

关于javascript - 如何在我的输入数据不填充该数组中的其他输入的情况下编辑动态添加的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55661783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com