我有一个关于 formik 的问题。基本上,我将有一个表格,其中列出了有错误的表单的所有 Id。当用户单击表单的 Id 时,它将显示表单本身。要求是在呈现表单时也应该显示错误。有谁知道如何用 Formik 做到这一点?此外,如果用户编辑该字段,则字段验证应正常工作。
我把代码和盒子链接放在这里。https://codesandbox.io/s/pensive-brattain-yyls2。基本上我希望当表单出现时我应该看到错误,而不仅仅是当用户离开该字段或更改它时。谢谢你。
import { Formik, Field, Form } from "formik";
import { TextField } from "formik-material-ui";
class Post0 extends React.Component {
validateEmptyName(value) {
if (!value) {
return "Invalid Name";
}
}
render() {
return (
<div>
<Formik
initialValues={{
email: "",
animal: ""
}}
onSubmit={values => {
this.props.nextStep(values);
}}
render={({ values, isSubmitting }) => (
<Form>
<Field
name="email"
type="email"
value={values.email}
component={TextField}
variant="outlined"
validate={this.validateEmptyName}
/>
<Field
name="animal"
value={values.animal}
component={TextField}
variant="outlined"
/>
<button type="submit">Submit</button> …Run Code Online (Sandbox Code Playgroud) 我正在学习Java中的Thread并且有一个像这样的小程序.我创建一个线程并使用它来创建另一个线程.但是我无法更改第二个线程的名称.任何人都可以解释为什么会这样吗?另外,Thread.sleep(100)表示主线程将休眠100毫秒是否正确.谢谢.
class Thread1 extends Thread{
public void run() {
for(int i=0;i<5;i++){
System.out.println(getName()+" is running. Time is "+i);
}
}
}
public class Program{
public static void main(String[] args) throws InterruptedException {
Thread t1 = new Thread1();
t1.setName("Thread 1");
Thread t2 = new Thread(t1);
t2.setName("Thread 2");
t1.start();
Thread.sleep(100);
t2.start();
}
}
Run Code Online (Sandbox Code Playgroud)
该计划的结果如下:
Thread 1 is running. Time is 0
Thread 1 is running. Time is 1
Thread 1 is running. Time is 0
Thread 1 is running. Time is 1
Run Code Online (Sandbox Code Playgroud)
编辑:如果我将getName()更改为Thread.currentThread().getName(),那么一切都按预期工作.它们之间有什么区别?