조타이 소개. 파생 원자. UI 제어
13305 단어 reactjavascriptwebdevbeginners
하나의 입력과 유효성 검사로 이미 간단한 양식을 만들었습니다. 이제 유효성 검사 및 제출 버튼을 사용하여 다른 입력을 추가해 보겠습니다. 나중에 validation atom을 사용하여 사용자가 양식을 제출할 수 있는지 여부를 결정할 수 있습니다. 이 부분에서는 기본 HTML 요소에서 Material UI로 전환합니다.
import TextField from "@mui/material/TextField";
const Input = ({ type = "text", label, sourceAtom }: InputProps) => {
const [text, setText] = useAtom(sourceAtom);
return (
<TextField
type={type}
label={label}
variant="filled"
value={text}
onChange={(e) => setText(e.target.value)}
/>
);
};
새 버전의
Input
구성 요소를 사용하고 이름과 암호에 대한 입력을 생성해 보겠습니다.const nameAtom = atom("John");
const passwordAtom = atom("");
const Form = () => {
return (
<Box
component="form"
sx={{
"& > :not(style)": { m: 2, width: "25ch" }
}}
>
<Typography variant="h3" gutterBottom>
Registration form
</Typography>
<Input label="Name" sourceAtom={nameAtom} />
<Input type="password" label="Password" sourceAtom={passwordAtom} />
</Box>
);
};
소스 아톰이 준비되었습니다. 다음 단계는 파생 검증 원자를 생성하는 것입니다.
const nameLengthAtom = atom((get) => get(nameAtom).length);
const passwordLengthAtom = atom((get) => get(passwordAtom).length);
const isNameValid = atom((get) => get(nameLengthAtom) >= 3);
const isPasswordValid = atom((get) => get(passwordLengthAtom) >= 3);
사용자가 양식을 제출할 수 있는지 여부를 제어하려면 아톰이 하나 더 필요합니다. 전체 형식이 유효한 상태인지 여부를 설명하는 일반적인 원자입니다.
const isFormValid = atom((get) => get(isNameValid) && get(isPasswordValid));
이 아톰은 이름 및 암호 유효성 검사 아톰에서 값을 파생하고 해당 값을 함께 결합합니다. 이 새로운 아톰을 사용하여 제출 버튼을 만들 준비가 된 것입니다.
const SubmitButton = () => {
const isValid = useAtomValue(isFormValid);
return (
<Box>
<Button disabled={!isValid} variant="outlined">
Register
</Button>
</Box>
);
};
양식이 유효하면 제출 버튼을 클릭할 준비가 된 것입니다. 양식이 유효하지 않으면 버튼이 비활성화됩니다. 단순한.
이제 전체 형태가 어떻게 보이는지 봅시다.
const Form = () => (
<Box
component="form"
sx={{
"& > :not(style)": { m: 2, width: "25ch" }
}}
>
<Typography variant="h3" gutterBottom>
Registration form
</Typography>
<Input label="Name" sourceAtom={nameAtom} />
<Input type="password" label="Password" sourceAtom={passwordAtom} />
<Error sourceAtom={isNameValid} errorInfo="Name is too short" />
<Error sourceAtom={isPasswordValid} errorInfo="Password is too short" />
<SubmitButton />
</Box>
);
이 양식은 또한 새로운 일반
Error
구성 요소를 사용하여 특정 오류를 표시합니다. 이 구성 요소의 소스를 보려면 full code을 확인하십시오.항상 그렇듯이 Jotai 코드의 문서 및 더 많은 예제를 확인하려면 Jotai website 확인하십시오.
Reference
이 문제에 관하여(조타이 소개. 파생 원자. UI 제어), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/fricze/introduction-to-jotai-derived-atoms-controlling-ui-4c0d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)