3.1.1
MAC 、 хром 63.0.3239.84 (64) 、 antd 3.1.1
https://ant.design/components/form-cn/#components -form-demo-dynamic-form-item
Значение набора элементов динамической формы,
`const formItems = keys.map ((k, index) => {
возвращение (
required = {true}
ключ = {k}
>
{getFieldDecorator (minAmount - $ {k}, {
правила: [{
требуется: true,
сообщение: "请 输入 大于 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}
}
);
.
Задайте значение как общие поля.
Вы не можете установить поле до его регистрации.
При редактировании данных строки и установке данных в элемент динамической формы.
Привет @kerrzhao. Пожалуйста, предоставьте онлайн-копию, разветвив эту ссылку https://u.ant.design/codesandbox-repro. Проблемы с пометкой Need Reproduce
будут закрыты, если в течение 7 дней не будет выполнено никаких действий.
@yesmeck https://codesandbox.io/s/3rxj27q281 Вот демонстрация кода. Ожидаемый эффект - установить значение по умолчанию в динамическом поле.
Как и в предупреждении, вы не можете установить значение поля до регистрации.Когда вы устанавливаете значение names_2
в componentDidMount, оно еще не было зарегистрировано.
Привет @kerrzhao , мы используем выпуски GitHub, чтобы отслеживать ошибки или обсуждать планы Ant Design. Поэтому, пожалуйста , не задавайте здесь переполнении стека или ошибке сегмента , а затем применить к своему вопросу теги antd
и react
.
setFieldsValue
вызове этого метода form
не зарегистрирован, используйте setFields
попробовать @kerrzhao
Та же проблема. По английски пожалуйста.
@naefl Как указано в предупреждении, вы не можете вызвать setFieldsValue
до того, как поле будет зарегистрировано.
@naefl попробуйте вместо этого 'setFields'
@naefl Вместо этого мы можем использовать initialValue
и установить в качестве значения поля пример: https://codesandbox.io/s/3rxj27q281
Имея ту же проблему:
Происходит иногда, но никогда в первый раз, когда компонент монтируется в React Native.
Что странно в этом, так это то, что setFieldValues
следует вызывать только после того, как форма была отрисована.
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 доза работает?
@fenghuizhang это работает для меня
почему не так?
const formData = {
name: data.name,
title: data.title,
desc: data.desc,
link: data.link,
};
this.props.form.setFieldsValue(formData);
может быть, в ваших полях нет одного из
если в вашей форме нет полей, которые вы задали, появится эта ошибка!
У меня такая же проблема:
Вы не можете установить поле до его регистрации.
но причина была наконец найдена: я установил значение для полей, форма которых не существует, что привело к появлению ошибки!
Спасибо @yanzishang , ваш ответ очень помог мне в решении проблем.
Большинство ярлыков ошибочны
если поле не задано, тоже предупреждение.
Итак, сначала установите поле, например: form.getFieldDecorator('fieldName', { initialValue: {} })
в render (),
затем установитеFieldValue в своих методах.
это работает для меня ~
У меня такая же проблема.
Я думаю, это связано с тем, что значение поля является объектом, как сказал @kerrzhao :
Example this.props.form.setFields( { "minAmount-1" : {value : 111} } ); .
Поле установлено. если я делаю fields.hasOwnProperty (myField), он возвращает true.
У меня такая же проблема, причина в том, что значение для полей, которые формируются, не существует
@ guixuefeng101 то же самое со мной
Ошибка действительно должна говорить:
«Вы не можете установить поле до визуализации поля, связанного со значением».
«Регистрация» звучит так, как будто проблема является внутренней по отношению к среде Ant и не имеет значения для новых разработчиков.
@joeheyming Вы можете отправить PR, чтобы улучшить эту инструкцию.
@ afc163 есть указатели на то, где это сообщение? Я не могу найти это
используйте initialValue getFieldDecorator вместо setFields или setFieldsValue
У меня аналогичная проблема, но благодаря @gitdust ваше решение отлично решило мою проблему.
Мне нужно установить начальное значение динамически, потому что есть много условий с разным начальным значением.
Я отказался от опоры начального значения по умолчанию, вместо этого используйте form.setFields перед методом рендеринга. Спасибо!
вы можете сначала установить форму, например
В компоненте формы есть только A и B, а в объекте вашего набора есть дополнительный C
если в вашей форме нет полей, которые вы задали, появится эта ошибка!
у меня работает, отлично!
Как игнорировать это предупреждение?
@kerrzhao Я пытаюсь вставить setFieldsValue
в setState
после чего предупреждение исчезнет, и проблема решена;
код ниже:
this.setState({
addOptionsList: newAddOptionsList
},
() => {
setFieldsValue({
[
modifyedContent $ {значение} ]: ''
});
});
если в вашей форме нет полей, которые вы задали, появится эта ошибка!
шесть шесть шесть
попробуйте form.getFieldDecorator('fieldName', { initialValue: your_value })
вы должны определить свои поля с помощью v-decorator
в форме, например:
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="description" hasFeedback>
<a-textarea v-decorator="['description']"/>
</a-form-item>
документ может быть более ясным в таком важном сообщении.
если в вашей форме нет полей, которые вы задали, появится эта ошибка!
классно
У меня была та же проблема, что и для имени моего поля задано случайное значение astermihagauvlent, я исправил это, изменив имя поля на «ключи»
initialValue не изменится после первого рендеринга, как и defaultValue. В этой ситуации попробуйте setFieldValue или mapPropsToFields.
пример:
if (this.props.form.getFieldValue ('версия')) {
this.props.form.setFieldsValue ({
версия: info.version,
});
}
вы устанавливаете поля, которых у вас нет. :)
Большинство ярлыков ошибочны
Правда
@ShMcK, у меня работает, спасибо большое :)
getFieldsValue в порядке.
Убедитесь, что поле зарегистрировано до setFieldsValue
`` javascript
const {форма} = this.props;
if (undefined! == form.getFieldValue ('foo')) {
form.setFieldsValue ({
foo: 'привет, мир',
});
}
`` ''
если в вашей форме нет полей, которые вы задали, появится эта ошибка!
Спасибо
Для меня проблема была связана с тем, что я вызвал setFieldsValue с объектом, у которого было несколько полей, в то время как моя форма имела только одно поле.
Вот функция, которую вы можете использовать для
const dataIWantToFillFormWith = { "test1": "dummy data", "test2": "more dummy data" }
Object.keys(form.getFieldsValue()).forEach(key => {
const obj = {};
obj[key] = dataIWantToFillFormWith[key] || null;
setFieldsValue(obj)
Используя эту функцию, он проигнорирует любые поля, которые не существуют в форме.
используйте initialValue getFieldDecorator вместо setFields или setFieldsValue
вы не можете использовать resetFields, сбросив его, когда используете initialValue getFieldDecorator
Для меня проблема была связана с тем, что я вызвал setFieldsValue с объектом, у которого было несколько полей, в то время как моя форма имела только одно поле.
Вот функция, которую вы можете использовать для
const dataIWantToFillFormWith = { "test1": "dummy data", "test2": "more dummy data" } Object.keys(form.getFieldsValue()).forEach(key => { const obj = {}; obj[key] = dataIWantToFillFormWith[key] || null; setFieldsValue(obj)
Используя эту функцию, он проигнорирует любые поля, которые не существуют в форме.
Это было единственное решение, найденное во вселенной, которое сработало с использованием хуков с эффектом.
если в вашей форме нет полей, которые вы задали, появится эта ошибка!
люблю вас
для меня у меня есть несколько форм. Обнаруженная мной ошибка просто вызвана неправильным экземпляром формы, поэтому я уверен, что поле было зарегистрировано, но не может быть установлено значение с помощью setFieldsValue
. Мне так грустно | _ |
Самый полезный комментарий
если в вашей форме нет полей, которые вы задали, появится эта ошибка!