Slide 62
Slide 62 text
Zustand Slice Patternなるものを使ってみた
import type { FormInputSliceCreator } from '@/common/form';
import { validateLength } from '@/common/form/validation';
export type NameSlice = {
name: string;
setName: (name: string) => void;
getNameErrorMessages: (value: string) => string[];
getNameIsValid: () => boolean;
};
export const createNameSlice: FormInputSliceCreator<
NameSlice,
{ name: string }
> = (initialValue) => (set, get) => ({
name: initialValue.name,
setName: (name) => set({ name }),
getNameErrorMessages: (name) => [
...validateLength({ value: name, minLength: 1, maxLength: 50 }),
],
getNameIsValid: () => get().getNameErrorMessages(get().name).length === 0,
});
最近の開発
Zustand + Valibotによるフォーム実装
case2
50/54