3.1.1
MAC Chrom 63.0.3239.84 (64)ăund 3.1.1
https://ant.design/components/form-cn/#components -form-demo-dynamic-form-item
Wert des dynamischen Formularelements,
` const formItems = keys.map((k, index) => {
RĂŒckkehr (
erforderlich={wahr}
SchlĂŒssel={k}
>
{getFieldDecorator( minAmount-${k} , {
Regeln: [{
erforderlich: wahr,-
Meldung: "èŻ·èŸć
„性äș0çćŒ",
}],
})(
)}
{ (keys.length > 1) ? (
<Button
type="danger"
disabled={keys.length === 1}
onClick={() => this.remove(k)}
>ć é€</Button>
) : null}
</FormItem>
);
});
Example this.props.form.setFields(
{
"minAmount-1" : {value : 111}
}
);
.
Wert als allgemeine Felder festlegen.
Sie können das Feld nicht festlegen, bevor Sie es registriert haben.
Wenn Sie die Zeilendaten bearbeiten und die Daten auf ein dynamisches Formularelement setzen.
Hallo @kerrzhao. Bitte stellen Sie eine Online-Reproduktion zur VerfĂŒgung, indem Sie diesen Link https://u.ant.design/codesandbox-repro verzweigen. Probleme, die mit Need Reproduce
sind, werden geschlossen, wenn innerhalb von 7 Tagen keine AktivitÀten stattfinden.
@yesmeck https://codesandbox.io/s/3rxj27q281 Hier ist die Code-Demo. Der erwartete Effekt besteht darin, den Standardwert im dynamischen Feld festzulegen.
Genau wie in der Warnung können Sie den Wert des Felds vor der Registrierung nicht festlegen.Wenn Sie den Wert von names_2
in componentDidMount festlegen, wurde es noch nicht registriert.
Hallo @kerrzhao , wir verwenden GitHub-Probleme, um Fehler zu verfolgen oder PlÀne von Ant Design zu diskutieren. Stellen Sie hier also bitte keine Nutzungsfragen . Sie können versuchen, Fragen zu Stack Overflow oder Segment Fault zu stellen und dann die Tags antd
und react
auf Ihre Frage anwenden.
setFieldsValue
diese Methode aufgerufen wird, ist form
nicht registriert, verwenden Sie setFields
um @kerrzhao setFields
versuchen
Gleiches Problem. Englisch Bitte.
@naefl Wie bereits erwÀhnt, können Sie setFieldsValue
nicht aufrufen, bevor das Feld registriert wurde.
@naefl versuche stattdessen 'setFields'
@naefl Wir können stattdessen initialValue
verwenden und den Feldwert auf das Beispiel setzen: https://codesandbox.io/s/3rxj27q281
Habe das gleiche Problem:
Tritt gelegentlich auf, aber nie beim ersten Mounten einer Komponente auf React Native.
Das Seltsame daran ist, dass setFieldValues
erst nach dem Rendern des Formulars aufgerufen werden sollte.
class Login extends React.Component {
componentDidMount() {
this.getStoredSettings()
}
getStoredSettings = async () => {
const canLogin = await getItem('token')
if (!canLogin) {
const creds = await getItem('credentials')
if (creds) {
// update values with creds
const { email, password } = JSON.parse(creds)
try {
this.props.form.setFieldsValue({
email,
password,
})
} catch (error) {
console.log(error)
}
}
}
}
render() {
const { form, initialValues } = this.props
const { email, password } = initialValues
const { getFieldProps } = form
return (
<Form>
<InputItem
{...getFieldProps('email', {
initialValue: email,
})}
/>
<InputItem
{...getFieldProps('password', {
initialValue: password,
})}
type='password'
/>
</Form>
)
}
}
const LoginForm = createForm()(Login)
const mapState = (state) => {
return {
initialValues: {
email: __DEV__ ? DEFAULT_EMAIL : '',
password: __DEV__ ? DEFAULT_PASSWORD : '',
},
}
}
export default connect(mapState)(LoginForm)
@gitdust Dosis funktioniert es?
@fenghuizhang es ist Arbeit fĂŒr mich
warum nicht so?
const formData = {
name: data.name,
title: data.title,
desc: data.desc,
link: data.link,
};
this.props.form.setFieldsValue(formData);
vielleicht ist in deinen feldern eins nicht in der aus
Wenn Ihr Formular nicht die von Ihnen festgelegten Felder enthÀlt, wird dieser Fehler angezeigt!
Ich habe das gleiche Problem:
Sie können das Feld nicht festlegen, bevor Sie es registriert haben.
aber der Grund wurde endlich gefunden: Ich habe einen Wert fĂŒr Felder gesetzt, die form nicht vorhanden sind, verursachte einen Fehler!
Danke @yanzishang , deine Antwort hat mir bei der Lösung von Problemen sehr geholfen.
Die meisten Etiketten sind falsch
wenn Feld nicht gesetzt, auch Warnung.
Also, erstes Set-Feld, wie: form.getFieldDecorator('fieldName', { initialValue: {} })
in render(),
dann setFieldValue in Ihren Methoden.
bei mir funktioniert es~
Ich habe das gleiche Problem.
Ich denke, es hÀngt damit zusammen, dass der Feldwert ein Objekt ist, wie
Example this.props.form.setFields( { "minAmount-1" : {value : 111} } ); .
Das Feld ist gesetzt. Wenn ich field.hasOwnProperty(myField) mache, wird true zurĂŒckgegeben.
Ich habe das gleiche Problem, der Grund ist, dass Felder, die nicht vorhanden sind, einen Wert haben
@guixuefeng101 das gleiche bei mir
Der Fehler sollte eigentlich sagen:
"Sie können kein Feld festlegen, bevor Sie ein dem Wert zugeordnetes Feld gerendert haben."
"Registrieren" klingt so, als ob das Problem intern im Ant-Framework liegt und fĂŒr neue Entwickler keine Bedeutung hat.
@joeheyming Sie können eine PR senden, um diese Anweisung zu verbessern.
@afc163 irgendwelche
Verwenden Sie den initialValue von getFieldDecorator anstelle von setFields oder setFieldsValue
Ich habe das Àhnliche Problem, aber dank @gitdust hat Ihre Lösung mein Problem perfekt gelöst.
Ich muss den Anfangswert dynamisch setzen, da es viele Bedingungen mit unterschiedlichen Anfangswerten gibt.
Ich habe die Standard-Anfangswert-Prop aufgegeben und stattdessen form.setFields vor der Render-Methode verwendet. Vielen Dank!
Sie können zuerst das Formular so einstellen
Es gibt nur A und B in der Formkomponente und es gibt ein zusÀtzliches C im Objekt Ihrer Menge
Wenn Ihr Formular nicht die von Ihnen festgelegten Felder enthÀlt, wird dieser Fehler angezeigt!
funktioniert bei mir, super!
Wie kann man diese Warnung ignorieren?
@kerrzhao Ich versuche setFieldsValue
in setState
nachdem die Warnung verschwunden und das Problem gelöst ist;
der Code ist unten:
this.setState({
addOptionsList: newAddOptionsList
},
() => {
setFieldsValue({
[
geÀnderter Inhalt${value} ]: ''
});
});
Wenn Ihr Formular nicht die von Ihnen festgelegten Felder enthÀlt, wird dieser Fehler angezeigt!
sechs sechs sechs
versuche es mit form.getFieldDecorator('fieldName', { initialValue: your_value })
Sie sollten Ihre Felder mit v-decorator
im Formular definieren, wie:
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="description" hasFeedback>
<a-textarea v-decorator="['description']"/>
</a-form-item>
Dokument kann in dieser Art von wichtiger Botschaft klarer sein.
Wenn Ihr Formular nicht die von Ihnen festgelegten Felder enthÀlt, wird dieser Fehler angezeigt!
genial
Ich hatte das gleiche Problem, da mein Feldname auf einen zufĂ€lligen Wert "astermihagauvlent" gesetzt ist. Ich habe es behoben, indem ich den Feldnamen in "SchlĂŒssel" geĂ€ndert habe
initialValue wird sich nach dem ersten Rendern nicht Àndern, genau wie defaultValue. Versuchen Sie es in dieser Situation mit setFieldValue oder mapPropsToFields.
Beispiel:
if(this.props.form.getFieldValue('version')){
this.props.form.setFieldsValue({
Version: info.version,
});
}
Sie legen Felder fest, die Sie nicht haben. :)
Die meisten Etiketten sind falsch
Die Wahrheit
@ShMcK bei mir
getFieldsValue ist in Ordnung.
Stellen Sie sicher, dass das Feld vor setFieldsValue
registriert wurde
```javascript
const { form } = this.props;
if (undefiniert !== form.getFieldValue('foo')) {
form.setFieldsValue({
foo: 'Hallo Welt',-
});
}
````
Wenn Ihr Formular nicht die von Ihnen festgelegten Felder enthÀlt, wird dieser Fehler angezeigt!
Danke
FĂŒr mich lag das Problem daran, dass ich setFieldsValue mit einem Objekt mit mehreren Feldern aufgerufen habe, wĂ€hrend mein Formular nur ein Feld hatte.
Hier ist eine Funktion, mit der Sie
const dataIWantToFillFormWith = { "test1": "dummy data", "test2": "more dummy data" }
Object.keys(form.getFieldsValue()).forEach(key => {
const obj = {};
obj[key] = dataIWantToFillFormWith[key] || null;
setFieldsValue(obj)
Mit dieser Funktion werden alle Felder ignoriert, die im Formular nicht vorhanden sind.
Verwenden Sie den initialValue von getFieldDecorator anstelle von setFields oder setFieldsValue
Sie können resetFields nicht verwenden, setzen Sie es zurĂŒck, wenn Sie den initialValue von getFieldDecorator verwenden
FĂŒr mich lag das Problem daran, dass ich setFieldsValue mit einem Objekt mit mehreren Feldern aufgerufen habe, wĂ€hrend mein Formular nur ein Feld hatte.
Hier ist eine Funktion, mit der Sie
const dataIWantToFillFormWith = { "test1": "dummy data", "test2": "more dummy data" } Object.keys(form.getFieldsValue()).forEach(key => { const obj = {}; obj[key] = dataIWantToFillFormWith[key] || null; setFieldsValue(obj)
Mit dieser Funktion werden alle Felder ignoriert, die im Formular nicht vorhanden sind.
Dies war die einzige im Universum gefundene Lösung, die funktionierte
Wenn Ihr Formular nicht die von Ihnen festgelegten Felder enthÀlt, wird dieser Fehler angezeigt!
dich lieben
fĂŒr mich habe ich mehrere formen. Der Fehler, den ich gefunden habe, wird nur durch eine falsche Formularinstanz verursacht, deshalb bin ich mir ziemlich sicher, dass das Feld registriert wurde, aber nicht ĂŒber setFieldsValue
auf einen Wert gesetzt werden kann. So traurig fĂŒr mich|_|
Hilfreichster Kommentar
Wenn Ihr Formular nicht die von Ihnen festgelegten Felder enthÀlt, wird dieser Fehler angezeigt!