У меня были неожиданные результаты с ответом Hillstuk выше в многопоточных средах. Вот мое решение, использующее Newtonsoft ... Наслаждайтесь
public void InitJob() {
MyClass data = new MyClass {Foo = “Foo fighters”};
/* a unique identifier for demonstration purposes.. Use your own concoction here. */
int uniqueIdentifier = new Random().Next(int.MinValue, int.MaxValue);
IJobDetail newJob = JobBuilder.Create<MyAwesomeJob>()
.UsingJobData("JobData", JsonConvert.SerializeObject(data))
.WithIdentity($"job-{uniqueIdentifier}", "main")
.Build();
}
/* the execute method */
public class MyAwesomeJob : IJob
{
public void Execute(IJobExecutionContext context)
{
var jobData = JsonConvert.DeserializeObject<MyClass>(context.JobDetail.JobDataMap.GetString("JobData"));
}
}
/* for completeness */
public class MyClass {
string Foo { get; set; }
}
Вы используете <ErrorMessage ... />
неправильно. Имя prop должно быть строкой с тем же значением, что и ключ, который имеет ваш объект ошибки. Примерно так:
<ErrorMessage component="div" name="username" />
// --> {touched.username && error.username ? <div>{error. username}</div> : null}
Если мы следуем документации:
name
name: string
[ 1115] ОбязательноИмя поля в состоянии Formik. Чтобы получить доступ к вложенным объектам или массивам, name> может также принять траекторию, подобную lodash-подобному, например
blockquote>social.facebook
или>friends[0].firstName
. Посмотрите на пример в DOC:
[ 1113] https://jaredpalmer.com/formik/docs/api/errormessage