ꯑꯥꯔꯇꯤꯀꯜ ꯑꯁꯤ ꯁꯔꯚꯦꯖꯦ.ꯑꯦꯁ.ꯅꯥ ꯁ꯭ꯄꯣꯟꯁꯔ ꯇꯧꯕꯥ ꯑꯃꯅꯤ꯫ ꯑꯌꯥꯝꯕꯥ ꯔꯤꯑꯦꯛꯇ ꯗꯤꯕꯦꯂꯄꯔꯁꯤꯡꯅꯥ ꯀꯩꯗꯧꯉꯩꯗꯁꯨ ꯌꯥꯝꯅꯥ ꯋꯥꯅꯥ ꯈꯟꯅꯗꯅꯥ ꯁꯦꯌꯔ ꯇꯧꯔꯤꯕꯥ ꯃꯦꯟꯇꯦꯜ ꯃꯣꯗꯦꯜ ꯑꯃꯥ ꯂꯩ꯫ ꯃꯗꯨꯗꯤ ꯐꯔꯃꯁꯤꯡ ꯑꯁꯤ ꯃꯇꯝ ꯄꯨꯝꯅꯃꯛꯇꯥ ꯀꯝꯄꯣꯅꯦꯟꯇ ꯑꯣꯏꯅꯥ ꯂꯧꯅꯩ꯫ ꯃꯁꯤꯅꯥ ꯃꯈꯥꯗꯥ ꯄꯤꯔꯤꯕꯥ ꯁ꯭ꯇꯦꯛ ꯑꯃꯥ ꯍꯥꯌꯕꯅꯤ:
ꯂꯣꯀꯦꯜ ꯁ꯭ꯇꯦꯇꯀꯤꯗꯃꯛꯇꯥ ꯔꯤꯑꯦꯛꯇ ꯍꯨꯛ ꯐꯣꯔꯝ (ꯃꯤꯅꯤꯃꯝ ꯔꯤ-ꯔꯦꯟꯗꯔꯁꯤꯡ, ꯑꯦꯔꯒꯣꯅꯣꯃꯤꯛ ꯐꯤꯜꯗ ꯔꯦꯖꯤꯁ꯭ꯠꯔꯦꯁꯟ, ꯏꯝꯄꯦꯔꯦꯇꯤꯚ ꯏꯟꯇꯔꯦꯛꯁꯟ)꯫ ꯚꯦꯂꯤꯗꯦꯁꯅꯒꯤꯗꯃꯛ ꯖꯣꯗ (ꯏꯅꯄꯨꯠ ꯑꯆꯨꯝꯕꯥ, ꯉꯃꯈꯩ ꯚꯦꯂꯤꯗꯦꯁꯟ, ꯇꯥꯏꯞ-ꯁꯦꯐ ꯄꯥꯔꯁꯤꯡ)꯫ ꯕꯦꯀꯑꯦꯟꯗꯀꯤꯗꯃꯛ ꯔꯤꯑꯦꯛꯇ ꯀ꯭ꯕꯦꯔꯤ: ꯁꯕꯃꯤꯁꯟ, ꯑꯃꯨꯛ ꯍꯟꯅꯥ ꯍꯣꯠꯅꯕꯥ, ꯀꯦꯁꯤꯡ, ꯁꯔꯚꯔ ꯁꯤꯉ꯭ꯛ, ꯑꯁꯤꯅꯆꯤꯡꯕꯥ꯫
ꯑꯃꯁꯨꯡ ꯐꯣꯔꯝ ꯑꯌꯥꯝꯕꯒꯤ ꯑꯣꯏꯅꯥ — ꯅꯍꯥꯛꯀꯤ ꯂꯣꯒꯏꯟ ꯁ꯭ꯛꯔꯤꯅꯁꯤꯡ, ꯅꯍꯥꯛꯀꯤ ꯁꯦꯇꯤꯡ ꯄꯦꯖꯁꯤꯡ, ꯅꯍꯥꯛꯀꯤ ꯁꯤ.ꯑꯥꯔ.ꯌꯨ.ꯗꯤ.ꯒꯤ ꯃꯣꯗꯂꯁꯤꯡ — ꯃꯁꯤꯅꯥ ꯇꯁꯦꯡꯅꯥ ꯐꯖꯅꯥ ꯊꯕꯛ ꯇꯧꯏ꯫ ꯄꯣꯠ ꯈꯨꯗꯤꯡꯃꯛꯅꯥ ꯃꯁꯥꯒꯤ ꯊꯕꯛ ꯇꯧꯏ, ꯃꯈꯣꯌꯅꯥ ꯁꯦꯡꯅꯥ ꯀꯝꯄꯣꯖ ꯇꯧꯏ, ꯑꯃꯁꯨꯡ ꯅꯍꯥꯛꯅꯥ ꯅꯍꯥꯛꯀꯤ ꯑꯦꯞꯂꯤꯀꯦꯁꯅꯒꯤ ꯁꯔꯨꯀꯁꯤꯡꯗꯥ ꯆꯪꯁꯤꯅꯕꯥ ꯌꯥꯏ, ꯃꯈꯣꯌꯅꯥ ꯅꯍꯥꯛꯀꯤ ꯄꯣꯠꯊꯣꯛ ꯑꯗꯨ ꯇꯁꯦꯡꯅꯥ ꯈꯦꯠꯅꯕꯥ ꯊꯃꯏ꯫ ꯑꯗꯨꯕꯨ ꯃꯇꯝ ꯑꯃꯗꯥ ꯐꯣꯔꯝ ꯑꯃꯅꯥ ꯍꯥꯟꯅꯒꯤ ꯄꯥꯎꯈꯨꯃꯁꯤꯡꯗꯥ ꯌꯨꯝꯐꯝ ꯑꯣꯏꯕꯥ ꯚꯤꯖꯤꯕꯤꯂꯤꯇꯤ ꯔꯨꯂꯁꯤꯡ, ꯅꯠꯠꯔꯒꯥ ꯂꯝ ꯑꯍꯨꯃꯒꯤ ꯃꯅꯨꯡꯗꯥ ꯀꯦꯁꯀꯦꯗ ꯇꯧꯕꯥ ꯂꯧꯊꯣꯀꯄꯥ ꯚꯦꯜꯌꯨꯁꯤꯡꯒꯨꯝꯕꯥ ꯄꯣꯠꯁꯤꯡ ꯄꯨꯊꯣꯀꯄꯥ ꯍꯧꯏ꯫ ꯔꯟ ꯇꯧꯔꯤꯕꯥ ꯑꯄꯨꯅꯕꯥ ꯑꯃꯗꯥ ꯌꯨꯝꯐꯝ ꯑꯣꯏꯔꯒꯥ ꯊꯥꯗꯣꯛꯀꯗꯕꯥ ꯅꯠꯔꯒꯥ ꯎꯠꯀꯗꯕꯥ ꯄꯦꯖ ꯄꯨꯝꯅꯃꯛ ꯐꯥꯑꯣꯕꯥ ꯑꯣꯏꯔꯕꯁꯨ ꯌꯥꯏ꯫ ꯑꯗꯣꯝꯅꯥ ꯑꯍꯥꯅꯕꯥ ꯀꯟꯗꯤꯁꯅꯦꯜ ꯑꯗꯨ useWatch ꯑꯃꯁꯨꯡ ꯏꯅꯂꯥꯏꯟ ꯕ꯭ꯔꯥꯟꯆ ꯑꯃꯒꯥ ꯂꯣꯌꯅꯅꯥ ꯍꯦꯟꯗꯜ ꯇꯧꯏ, ꯃꯁꯤ ꯐꯩ꯫ ꯑꯗꯨꯗꯒꯤ ꯑꯇꯣꯞꯄꯥ ꯑꯃꯅꯥ꯫ ꯃꯗꯨꯒꯤ ꯃꯇꯨꯡꯗꯥ ꯅꯍꯥꯛꯅꯥ ꯅꯍꯥꯛꯀꯤ ꯖꯣꯗ ꯁ꯭ꯀꯤꯃꯅꯥ ꯅꯣꯔꯃꯦꯜ ꯑꯣꯏꯕꯥ ꯃꯑꯣꯡꯗꯥ ꯐꯣꯡꯗꯣꯀꯄꯥ ꯉꯃꯗꯕꯥ ꯀ꯭ꯔꯣꯁ-ꯐꯤꯜꯗ ꯔꯨꯂꯁꯤꯡ ꯑꯦꯅꯀꯣꯗ ꯇꯧꯅꯕꯥ ꯁꯨꯄꯔꯔꯤꯐꯥꯏꯅꯗꯥ ꯌꯧꯔꯛꯂꯤ꯫ ꯃꯗꯨꯒꯤ ꯃꯇꯨꯡꯗꯥ, ꯁ꯭ꯇꯦꯞ ꯅꯦꯚꯤꯒꯦꯁꯟꯅꯥ ꯕꯤꯖꯤꯅꯦꯁ ꯂꯣꯖꯤꯛ ꯂꯤꯛ ꯇꯧꯕꯥ ꯍꯧꯏ꯫ ꯃꯇꯝ ꯈꯔꯒꯤ ꯃꯇꯨꯡꯗꯥ, ꯅꯍꯥꯛꯅꯥ ꯁꯦꯃꯈꯤꯕꯥ ꯑꯗꯨ ꯌꯦꯡꯏ ꯑꯃꯁꯨꯡ ꯐꯣꯔꯝ ꯑꯗꯨ ꯇꯁꯦꯡꯅꯥ ꯌꯨ.ꯑꯥꯏ. ꯃꯁꯤ ꯍꯦꯟꯅꯥ ꯋꯥꯔꯦꯞ ꯂꯧꯕꯒꯤ ꯊꯧꯑꯣꯡꯅꯤ, ꯑꯃꯁꯨꯡ ꯀꯝꯄꯣꯅꯦꯟꯇ ꯇ꯭ꯔꯤ ꯑꯁꯤ ꯅꯍꯥꯛꯅꯥ ꯊꯃꯈꯤꯕꯥ ꯃꯐꯝ ꯑꯗꯨ ꯈꯛꯇꯅꯤ꯫ ꯃꯁꯤꯗꯥ ꯑꯩꯅꯥ ꯈꯜꯂꯤ ꯃꯗꯨꯗꯤ ꯔꯤꯑꯦꯛꯇꯇꯥ ꯐꯣꯔꯃꯁꯤꯡꯒꯤ ꯃꯦꯟꯇꯦꯜ ꯃꯣꯗꯦꯜ ꯑꯁꯤ ꯊꯨꯒꯥꯏꯔꯤ, ꯑꯃꯁꯨꯡ ꯃꯁꯤ ꯇꯁꯦꯡꯅꯥ ꯀꯅꯥꯒꯨꯝꯕꯥ ꯑꯃꯒꯤ ꯑꯁꯣꯏꯕꯥ ꯅꯠꯇꯦ꯫ ꯑꯥꯔ.ꯑꯩꯆ.ꯑꯦꯐ.+ꯖꯣꯗ ꯁ꯭ꯇꯦꯛ ꯑꯁꯤ ꯃꯁꯤꯒꯤꯗꯃꯛꯇꯥ ꯗꯤꯖꯥꯏꯟ ꯇꯧꯈꯤꯕꯥ ꯑꯗꯨꯗꯥ ꯑꯐꯕꯥ ꯑꯣꯏ꯫ ꯏꯁꯨ ꯑꯁꯤ ꯑꯩꯈꯣꯌꯅꯥ ꯃꯁꯤꯒꯤ ꯑꯦꯕꯁ꯭ꯠꯔꯦꯛꯁꯅꯁꯤꯡ ꯑꯁꯤ ꯄ꯭ꯔꯣꯕ꯭ꯂꯦꯝ ꯑꯗꯨꯒꯥ ꯃꯥꯟꯅꯕꯥ ꯄꯣꯏꯟꯇ ꯑꯗꯨꯗꯒꯤ ꯍꯦꯟꯅꯥ ꯁꯤꯖꯤꯟꯅꯗꯨꯅꯥ ꯂꯩꯕꯥ ꯊꯦꯡꯅꯩ ꯃꯔꯃꯗꯤ ꯑꯂꯇꯔꯅꯦꯇꯤꯕ ꯑꯁꯤꯅꯥ ꯐꯔꯃꯁꯤꯡꯒꯤ ꯃꯇꯥꯡꯗꯥ ꯃꯄꯨꯡ ꯐꯥꯅꯥ ꯈꯅꯕꯒꯤ ꯇꯣꯉꯥꯅꯕꯥ ꯃꯑꯣꯡ ꯑꯃꯥ ꯃꯊꯧ ꯇꯥꯏ꯫ ꯑꯥꯔꯇꯤꯀꯜ ꯑꯁꯤ ꯑꯂꯇꯔꯅꯦꯇꯤꯕ ꯑꯗꯨꯒꯤ ꯃꯇꯥꯡꯗꯥ ꯑꯣꯏꯔꯤ꯫ ꯃꯁꯤ ꯎꯠꯅꯕꯥ ꯑꯩꯈꯣꯌꯅꯥ ꯆꯞ ꯃꯥꯟꯅꯕꯥ ꯃꯜꯇꯤ-ꯁ꯭ꯇꯦꯞ ꯐꯣꯔꯝ ꯑꯗꯨ ꯑꯅꯤꯔꯛ ꯁꯦꯃꯒꯅꯤ:
ꯔꯤꯑꯦꯛꯇ ꯍꯨꯛ ꯐꯣꯔꯝ + ꯖꯣꯗ ꯑꯁꯤ ꯁꯕꯃꯤꯁꯅꯒꯤꯗꯃꯛꯇꯥ ꯔꯤꯑꯦꯛꯇ ꯀ꯭ꯕꯦꯔꯤꯗꯥ ꯋꯥꯏꯔ ꯇꯧꯕꯒꯥ ꯂꯣꯌꯅꯅꯥ, ꯁꯔꯚꯦꯖꯦꯑꯦꯁꯀꯥ ꯂꯣꯌꯅꯅꯥ, ꯃꯁꯤꯅꯥ ꯐꯣꯔꯝ ꯑꯃꯕꯨ ꯗꯦꯇꯥ ꯑꯣꯏꯅꯥ ꯂꯧꯏ — ꯏꯆꯝ ꯆꯝꯕꯥ JSON ꯁ꯭ꯀꯤꯝ ꯑꯃꯥ — ꯀꯝꯄꯣꯅꯦꯟꯇ ꯇ꯭ꯔꯤ ꯑꯃꯒꯤ ꯃꯍꯨꯠꯇꯥ꯫
ꯆꯞ ꯃꯥꯟꯅꯕꯥ ꯃꯊꯧ ꯇꯥꯕꯁꯤꯡ, ꯆꯞ ꯃꯥꯟꯅꯕꯥ ꯀꯟꯗꯤꯁꯅꯦꯜ ꯂꯣꯖꯤꯛ, ꯑꯔꯣꯏꯕꯗꯥ ꯆꯞ ꯃꯥꯟꯅꯕꯥ API ꯀꯣꯜ꯫ ꯃꯗꯨꯒꯤ ꯃꯇꯨꯡꯗꯥ ꯑꯩꯈꯣꯌꯅꯥ ꯀꯔꯤ ꯆꯠꯈꯤꯕꯒꯦ ꯑꯃꯁꯨꯡ ꯀꯔꯤ ꯂꯩꯈꯤꯕꯒꯦ ꯍꯥꯌꯕꯗꯨ ꯑꯆꯨꯝꯕꯥ ꯃꯑꯣꯡꯗꯥ ꯃꯦꯞ ꯇꯧꯒꯅꯤ, ꯑꯃꯁꯨꯡ ꯑꯗꯣꯝꯅꯥ ꯀꯔꯤ ꯃꯣꯗꯦꯜ ꯁꯤꯖꯤꯟꯅꯒꯗꯒꯦ, ꯑꯃꯁꯨꯡ ꯀꯗꯥꯏꯗꯥ ꯁꯤꯖꯤꯟꯅꯒꯗꯒꯦ ꯍꯥꯌꯕꯗꯨ ꯂꯦꯄꯊꯣꯛꯅꯕꯥ ꯆꯠꯅꯕꯥ ꯌꯥꯕꯥ ꯃꯑꯣꯡ ꯑꯃꯥ ꯊꯃꯒꯅꯤ꯫ ꯑꯩꯈꯣꯌꯅꯥ ꯁꯦꯃꯒꯠꯂꯤꯕꯥ ꯐꯣꯔꯝ ꯑꯁꯤ:
ꯐꯣꯔꯝ ꯑꯁꯤꯅꯥ ꯈꯣꯡꯊꯥꯡ ꯴ꯒꯤ ꯐ꯭ꯂꯣ ꯑꯃꯥ ꯁꯤꯖꯤꯟꯅꯒꯅꯤ: ꯁ꯭ꯇꯦꯞ 1: ꯑꯀꯨꯞꯄꯥ ꯃꯔꯣꯂꯁꯤꯡ꯫
ꯑꯍꯥꯅꯕꯥ ꯃꯤꯡ (ꯃꯊꯧ ꯇꯥꯕꯥ), . ꯏꯃꯦꯜ (ꯃꯊꯧ ꯇꯥꯕꯥ, ꯆꯠꯅꯕꯥ ꯌꯥꯕꯥ ꯐꯣꯔꯃꯦꯠ)꯫
ꯈꯣꯡꯊꯥꯡ 2: ꯑꯣꯔꯗꯔ ꯇꯧꯕꯥ꯫
ꯌꯨꯅꯤꯠꯀꯤ ꯃꯃꯜ, ꯴. ꯃꯁꯤꯡ, ꯴. ꯇꯦꯛꯁꯀꯤ ꯆꯥꯡ, ꯴. ꯂꯧꯊꯣꯀꯄꯥ: ꯱. ꯁꯕꯇꯣꯇꯦꯜ, ꯴. ꯇꯦꯛꯁ, ꯴. ꯑꯄꯨꯅꯕꯥ ꯑꯣꯏꯅꯥ ꯑꯦꯟ.ꯗꯤ.ꯑꯦ.
ꯁ꯭ꯇꯦꯞ 3: ꯑꯦꯀꯥꯎꯟꯇ & ꯐꯤꯗꯕꯦꯛ꯫
ꯅꯍꯥꯛꯀꯤ ꯑꯦꯀꯥꯎꯟꯇ ꯂꯩꯕ꯭ꯔꯥ? (ꯍꯣꯌ/ꯅꯠꯇꯦ) ꯀꯔꯤꯒꯨꯝꯕꯥ Yes → ꯌꯨꯖꯔꯅꯦꯝ + ꯄꯥꯁꯋꯥꯔꯗ ꯑꯣꯏꯔꯕꯗꯤ, ꯑꯅꯤꯃꯛ ꯃꯊꯧ ꯇꯥꯏ꯫ ꯀꯔꯤꯒꯨꯝꯕꯥ ꯅꯠꯇꯦ → ꯁ꯭ꯇꯦꯞ 1ꯗꯥ ꯍꯥꯟꯅꯅꯥ ꯈꯣꯃꯖꯤꯜꯂꯕꯥ ꯏꯃꯦꯏꯜ ꯑꯣꯏꯔꯕꯗꯤ꯫
ꯁꯦꯇꯤꯁꯐꯦꯛꯁꯟ ꯔꯦꯇꯤꯡ (꯱–꯵) ꯑꯃꯁꯨꯡ ꯑꯦꯟ. ꯀꯔꯤꯒꯨꯝꯕꯥ ≥ 4 → “ꯅꯍꯥꯛꯅꯥ ꯀꯔꯤ ꯄꯥꯝꯂꯤꯕꯒꯦ?” ꯀꯔꯤꯒꯨꯝꯕꯥ ≤ 2 → “ꯑꯩꯈꯣꯌꯅꯥ ꯀꯔꯤ ꯑꯍꯣꯡꯕꯥ ꯄꯨꯔꯀꯄꯥ ꯉꯃꯒꯅꯤ?”
ꯈꯣꯡꯊꯥꯡ 4: ꯔꯤꯚꯤꯌꯨ ꯇꯧꯕꯥ꯫
ꯀꯔꯤꯒꯨꯝꯕꯥ ꯑꯄꯨꯅꯕꯥ >= 100 ꯑꯣꯏꯔꯕꯗꯤ ꯈꯛꯇꯃꯛ ꯎꯕꯥ ꯐꯪꯒꯅꯤ꯫ ꯐꯥꯏꯅꯦꯜ ꯁꯕꯃꯤꯁꯟ ꯇꯧꯕꯥ꯫
ꯃꯁꯤ ꯑꯀꯅꯕꯥ ꯋꯥꯐꯝ ꯅꯠꯇꯦ꯫ ꯑꯗꯨꯕꯨ ꯃꯁꯤꯅꯥ ꯑꯥꯔꯀꯤꯇꯦꯀꯆꯔꯒꯤ ꯈꯦꯠꯅꯕꯥ ꯑꯗꯨ ꯐꯣꯡꯗꯣꯀꯄꯗꯥ ꯃꯇꯤꯛ ꯆꯥꯕꯅꯤ꯫ ꯈꯪꯖꯤꯅꯒꯗꯕꯥ 1: ꯀꯝꯄꯣꯅꯦꯟꯇ-ꯗ꯭ꯔꯥꯏꯚꯟ (ꯔꯤꯑꯦꯛꯇ ꯍꯨꯛ ꯐꯣꯔꯝ + ꯖꯣꯗ) ꯏꯅꯁ꯭ꯇꯣꯂꯦꯁꯟ ꯇꯧꯕꯥ꯫ npm ꯔꯤꯑꯦꯛꯇ-ꯍꯨꯛ-ꯐꯣꯔꯝ ꯖꯣꯗ @hookform/resolvers @tanstack/react-query ꯏꯅꯁ꯭ꯇꯣꯜ ꯇꯧꯔꯣ
ꯖꯣꯗ ꯁ꯭ꯀꯤꯝ꯫ ꯖꯣꯗ ꯁ꯭ꯀꯤꯃꯗꯒꯤ ꯍꯧꯔꯁꯤ, ꯃꯔꯃꯗꯤ ꯃꯍꯧꯁꯥꯅꯥ ꯃꯐꯝ ꯑꯗꯨꯗꯥ ꯐꯔꯝ ꯑꯗꯨꯒꯤ ꯃꯑꯣꯡ ꯃꯇꯧ ꯑꯗꯨ ꯂꯦꯄꯊꯣꯀꯏ꯫ ꯑꯍꯥꯅꯕꯥ ꯈꯣꯡꯊꯥꯡ ꯑꯅꯤꯒꯤꯗꯃꯛ — ꯄꯔꯁꯣꯅꯦꯜ ꯗꯤꯇꯦꯂꯁ ꯑꯃꯁꯨꯡ ꯑꯣꯔꯗꯔ ꯏꯅꯄꯨꯠꯁꯤꯡ — ꯄꯨꯝꯅꯃꯛ ꯑꯁꯤ ꯁꯣꯏꯗꯅꯥ ꯑꯣꯏ: ꯃꯊꯧ ꯇꯥꯕꯥ ꯁ꯭ꯠꯔꯤꯡꯁꯤꯡ, ꯃꯤꯅꯤꯃꯝ ꯑꯣꯏꯕꯥ ꯅꯝꯕꯔꯁꯤꯡ, ꯑꯃꯁꯨꯡ ꯏꯅꯨꯝ ꯑꯃꯥ꯫ ꯀꯟꯗꯤꯁꯅꯦꯜ ꯔꯨꯂꯁꯤꯡ ꯑꯗꯨ ꯐꯣꯡꯗꯣꯛꯅꯕꯥ ꯍꯣꯠꯅꯕꯗꯥ ꯄꯨꯛꯅꯤꯡ ꯆꯤꯡꯁꯤꯟꯅꯤꯡꯉꯥꯏ ꯑꯣꯏꯕꯥ ꯁꯔꯨꯛ ꯑꯗꯨ ꯍꯧꯏ꯫
"ꯖꯣꯗ"ꯗꯒꯤ { z } ꯏꯝꯄꯣꯔꯠ ꯇꯧꯕꯥ;
export const formSchema = z.object({ ꯑꯍꯥꯅꯕꯥ ꯃꯃꯤꯡ: z.string().min(1, "ꯃꯊꯧ ꯇꯥꯕꯥ"), ꯏꯃꯦꯜ: z.string().email("ꯑꯁꯣꯌꯕꯥ ꯏꯃꯦꯜ"), ꯃꯃꯜ: z.number().min(0), ꯃꯁꯤꯡ: z.number().min(1), taxRate: z.number(), hasAccount: z.enum(["ꯍꯣꯌ", "ꯅꯠꯇꯦ"]), ꯌꯨꯖꯔꯅꯦꯝ: z.string().ꯑꯣꯄꯁꯅꯦꯜ(), ꯄꯥꯁꯋꯥꯔꯗ: z.string().ꯑꯣꯄꯁꯅꯦꯜ(), ꯁꯦꯇꯤꯁꯐꯦꯛꯁꯟ: z.number().min(1).max(5), positiveFeedback: z.string().ꯑꯣꯄꯁꯅꯦꯜ(), ꯏꯝꯞꯔꯨꯚꯃꯦꯟꯇꯐꯤꯗꯕꯦꯛ: z.string().ꯑꯣꯄꯁꯅꯦꯜ(),}).superRefine((ꯗꯦꯇꯥ, ctx) => { ꯀꯔꯤꯒꯨꯝꯕꯥ (ꯗꯦꯇꯥ.ꯍꯥꯁꯑꯦꯀꯥꯎꯟꯇ === "ꯍꯣꯌ") { ꯀꯔꯤꯒꯨꯝꯕꯥ (!data.username) { ctx.addIssue({ ꯀꯣꯗ: "ꯀꯁ꯭ꯇꯝ", ꯄꯥꯊ: ["ꯌꯨꯖꯔꯅꯦꯝ"], ꯃꯦꯁꯦꯖ: "ꯃꯊꯧ ꯇꯥꯕꯥ" }); } if (!ꯗꯦꯇꯥ.ꯄꯥꯁꯋꯥꯔꯗ || ꯗꯦꯇꯥ.ꯄꯥꯁꯋꯥꯔꯗ.ꯂꯦꯡꯗꯕꯥ < 6) { ctx.addIssue({ ꯀꯣꯗ: "ꯀꯁ꯭ꯇꯝ", ꯄꯥꯊ: ["ꯄꯥꯁꯋꯥꯔꯗ"], ꯃꯦꯁꯦꯖ: "ꯑꯛꯁꯔ ꯶" });
if (data.satisfaction >= 4 && !data.positiveFeedback) { ctx.addIssue({ ꯀꯣꯗ: "ꯀꯁ꯭ꯇꯝ", ꯄꯥꯊ: ["ꯄꯣꯖꯤꯇꯤꯕ ꯐꯤꯗꯕꯦꯛ"], ꯄꯥꯎꯖꯦꯜ: "ꯆꯥꯅꯕꯤꯗꯨꯅꯥ ꯅꯍꯥꯛꯅꯥ ꯄꯥꯝꯂꯤꯕꯗꯨ ꯁꯦꯌꯔ ꯇꯧꯕꯤꯌꯨ" }); }
ꯀꯔꯤꯒꯨꯝꯕꯥ (ꯗꯦꯇꯥ.ꯁꯦꯇꯤꯁꯐꯦꯛꯁꯟ <= 2 && !ꯗꯦꯇꯥ.ꯏꯝꯞꯔꯨꯚꯃꯦꯟꯇꯐꯤꯗꯕꯦꯛ) { ctx.addIssue({ ꯀꯣꯗ: "ꯀꯁ꯭ꯇꯝ", ꯄꯥꯊ:["improvementFeedback"], message: "ꯆꯥꯅꯕꯤꯗꯨꯅꯥ ꯑꯩꯈꯣꯌꯗꯥ ꯀꯔꯤ ꯑꯍꯣꯡꯕꯥ ꯄꯨꯔꯛꯀꯗꯒꯦ ꯍꯥꯌꯅꯥ ꯍꯥꯌꯕꯤꯌꯨ" }); }});
ꯑꯦꯛꯁꯄꯣꯔꯠ ꯃꯈꯜ FormData = z.infer<ꯐꯣꯔꯃꯒꯤ ꯃꯈꯜ>;
ꯌꯨꯖꯔꯅꯦꯝ ꯑꯃꯁꯨꯡ ꯄꯥꯁꯋꯥꯔꯗ ꯑꯁꯤ ꯀꯟꯗꯤꯁꯅꯦꯜ ꯑꯣꯏꯅꯥ ꯃꯊꯧ ꯇꯥꯕꯁꯨ ꯑꯣꯄꯁꯅꯦꯜ() ꯑꯣꯏꯅꯥ ꯇꯥꯏꯞ ꯇꯧꯏ ꯍꯥꯌꯕꯁꯤ ꯈꯪꯖꯤꯅꯕꯤꯌꯨ ꯃꯔꯃꯗꯤ ꯖꯣꯗꯀꯤ ꯇꯥꯏꯞ-ꯂꯦꯚꯦꯜ ꯁ꯭ꯀꯤꯝ ꯑꯁꯤꯅꯥ ꯑꯣꯕꯖꯦꯛꯇ ꯑꯗꯨꯒꯤ ꯃꯑꯣꯡ ꯑꯗꯨ ꯇꯥꯀꯏ, ꯐꯤꯜꯗꯁꯤꯡꯅꯥ ꯃꯔꯨꯑꯣꯏꯕꯥ ꯀꯗꯥꯏꯗꯥ ꯆꯠꯅꯔꯤꯕꯥ ꯔꯨꯂꯁꯤꯡ ꯑꯗꯨ ꯇꯥꯀꯏ꯫ ꯀꯟꯗꯤꯁꯅꯦꯜ ꯔꯤꯀꯣꯔꯗ ꯑꯁꯤ ꯁꯨꯄꯔꯔꯤꯐꯥꯏꯅꯒꯤ ꯃꯅꯨꯡꯗꯥ ꯂꯩꯒꯗꯕꯅꯤ, ꯃꯁꯤꯅꯥ ꯃꯑꯣꯡ ꯑꯗꯨ ꯚꯦꯂꯤꯗꯦꯠ ꯇꯧꯔꯕꯥ ꯃꯇꯨꯡꯗꯥ ꯆꯠꯊꯩ ꯑꯃꯁꯨꯡ ꯃꯄꯨꯡ ꯑꯣꯏꯕꯥ ꯑꯣꯕꯖꯦꯛꯇ ꯑꯗꯨꯗꯥ ꯑꯦꯛꯁꯦꯁ ꯂꯩ꯫ ꯑꯗꯨꯒꯨꯝꯕꯥ ꯇꯣꯈꯥꯏꯕꯥ ꯑꯗꯨ ꯑꯁꯣꯏꯕꯥ ꯑꯃꯅꯤ; ꯃꯁꯤ ꯈꯨꯠꯂꯥꯌ ꯑꯁꯤ ꯗꯤꯖꯥꯏꯟ ꯇꯧꯈꯤꯕꯥ ꯑꯗꯨ ꯈꯛꯇꯅꯤ: ꯁꯨꯄꯔꯔꯤꯐꯥꯏꯟ ꯍꯥꯌꯕꯁꯤ ꯁ꯭ꯀꯤꯝ ꯁ꯭ꯠꯔꯀꯆꯔ ꯃꯁꯥꯃꯛꯇꯗꯥ ꯐꯣꯡꯗꯣꯀꯄꯥ ꯉꯃꯗꯕꯥ ꯃꯇꯃꯗꯥ ꯀ꯭ꯔꯣꯁ-ꯐꯤꯜꯗ ꯂꯣꯖꯤꯛ ꯆꯠꯂꯤꯕꯥ ꯃꯐꯝ ꯑꯗꯨꯅꯤ꯫ ꯃꯐꯝ ꯑꯁꯤꯗꯥ ꯊꯣꯏꯗꯣꯛ ꯍꯦꯟꯗꯣꯀꯄꯥ ꯋꯥꯐꯃꯗꯤ ꯁ꯭ꯀꯤꯝ ꯑꯁꯤꯅꯥ ꯐꯣꯡꯗꯣꯀꯄꯥ ꯉꯃꯗꯕꯥ ꯑꯗꯨꯅꯤ꯫ ꯃꯁꯤꯗꯥ ꯄꯦꯖꯁꯤꯡꯒꯤ ꯋꯥꯈꯜꯂꯣꯟ ꯑꯃꯠꯇꯥ ꯂꯩꯇꯦ, ꯀꯔꯝꯕꯥ ꯐꯤꯜꯗꯁꯤꯡꯗꯥ ꯀꯔꯝꯕꯥ ꯄꯣꯏꯟꯇꯇꯥ ꯎꯕꯥ ꯐꯪꯕꯒꯦ ꯍꯥꯌꯕꯒꯤ ꯋꯥꯈꯜꯂꯣꯟ ꯑꯃꯠꯇꯥ ꯂꯩꯇꯦ ꯑꯃꯁꯨꯡ ꯅꯦꯚꯤꯒꯦꯁꯅꯒꯤ ꯋꯥꯈꯜꯂꯣꯟ ꯑꯃꯠꯇꯥ ꯂꯩꯇꯦ꯫ ꯃꯗꯨ ꯄꯨꯝꯅꯃꯛ ꯑꯇꯣꯞꯄꯥ ꯃꯐꯝ ꯑꯃꯗꯥ ꯍꯤꯡꯒꯅꯤ꯫ ꯐꯣꯔꯝ ꯀꯝꯄꯣꯅꯦꯟꯇ꯫
import { useForm, useWatch } from "react-hook-form";import { zodResolver } from "@hookform/resolvers/zod";import { useMutation } from "@tanstack/react-query";import { useState, useMemo } from "react";import { formSchema, type FormData } from "./schema";
const STEPS = ["ꯑꯀꯨꯞꯄꯥ ꯃꯔꯣꯂꯁꯤꯡ", "ꯑꯣꯔꯗꯔ", "ꯑꯦꯀꯥꯎꯟꯇ", "ꯔꯤꯚꯤꯌꯨ"];
type OrderPayload = FormData & { ꯁꯕꯇꯣꯇꯦꯜ: ꯃꯁꯤꯡ; ꯇꯦꯛꯁ: ꯃꯁꯤꯡ; ꯑꯄꯨꯅꯕꯥ: ꯃꯁꯤꯡ };
ꯑꯦꯛꯁꯄꯣꯔꯠ ꯐꯉ꯭ꯀꯁꯟ RHFMultiStepForm() { const [ꯁ꯭ꯇꯦꯞ, ꯁꯦꯠꯁ꯭ꯇꯦꯞ] = useState(0);
const ꯃ꯭ꯌꯨꯇꯦꯁꯟ = ꯌꯨꯖꯃꯎꯇꯦꯁꯟ({ mutationFn: async (ꯄꯦꯂꯣꯗ: ꯑꯣꯔꯗꯔꯄꯦꯂꯣꯗ) => { const res = await fetch("/api/ꯑꯣꯔꯗꯔꯁꯤꯡ", { ꯃꯦꯊꯗ: "ꯄꯣꯁ꯭ꯠ", headers: { "ꯀꯟꯇꯦꯟꯇ-ꯇꯥꯏꯞ": "ꯑꯦꯞꯂꯤꯀꯦꯁꯟ/json" }, ꯍꯀꯆꯥꯡ: JSON.stringify(ꯄꯦꯂꯣꯗ), }); if (!res.ok) throw new Error("ꯁꯕꯃꯤꯠ ꯇꯧꯕꯥ ꯉꯃꯗꯦ"); ꯔꯤꯇꯔꯟ ꯇꯧꯕꯥ res.json(); }, ꯴. });
const { ꯔꯦꯖꯤꯁ꯭ꯇꯔ, ꯀꯟꯠꯔꯣꯜ, handleSubmit, formState: { errors }, } = useForm
return (
);}ꯄꯦꯟ ꯁꯔꯚꯦꯖꯦ.ꯑꯦꯁ.-꯰꯳-ꯑꯥꯔ.ꯑꯩꯆ.ꯑꯦꯐ. ꯃꯐꯝ ꯑꯁꯤꯗꯥ ꯌꯥꯝꯅꯥ ꯋꯥꯅꯥ ꯊꯣꯛꯂꯤ, ꯑꯃꯁꯨꯡ ꯋꯥꯐꯃꯁꯤꯡ ꯑꯁꯤ ꯀꯗꯥꯏꯗꯥ ꯂꯣꯏꯁꯤꯅꯈꯤꯕꯒꯦ ꯍꯥꯌꯕꯗꯨ ꯈꯉꯕꯗꯥ ꯇꯞꯅꯥ ꯇꯞꯅꯥ ꯆꯠꯄꯥ ꯌꯥꯏ꯫
ꯂꯧꯊꯣꯀꯄꯥ ꯚꯦꯜꯌꯨꯁꯤꯡ — ꯁꯕꯇꯣꯇꯦꯜ, ꯇꯦꯛꯁ, ꯇꯣꯇꯦꯜ — ꯑꯁꯤ ꯀꯝꯄꯣꯅꯦꯟꯇ ꯑꯁꯤꯗꯥ useWatch ꯑꯃꯁꯨꯡ useMemoꯒꯤ ꯈꯨꯠꯊꯥꯡꯗꯥ ꯀꯝꯞꯌꯨꯇꯔ ꯇꯧꯏ ꯃꯔꯃꯗꯤ ꯃꯈꯣꯌ ꯑꯁꯤ ꯂꯥꯏꯕ ꯐꯤꯜꯗ ꯚꯦꯜꯌꯨꯁꯤꯡꯗꯥ ꯃꯈꯥ ꯄꯣꯜꯂꯤ ꯑꯃꯁꯨꯡ ꯃꯈꯣꯌꯒꯤꯗꯃꯛꯇꯥ ꯑꯇꯣꯞꯄꯥ ꯃꯍꯧꯁꯥꯒꯤ ꯃꯐꯝ ꯑꯃꯠꯇꯥ ꯂꯩꯇꯦ꯫ ꯌꯨꯖꯔꯅꯦꯝ, ꯄꯥꯁꯋꯥꯔꯗ, ꯄꯣꯖꯤꯇꯤꯚꯐꯤꯗꯕꯦꯛ, ꯑꯃꯁꯨꯡ ꯏꯝꯞꯔꯨꯚꯃꯦꯟꯇꯐꯤꯗꯕꯦꯀꯀꯤ ꯚꯤꯖꯤꯕꯤꯂꯤꯇꯤ ꯔꯨꯂꯁꯤꯡ ꯑꯁꯤ ꯏꯅꯂꯥꯏꯟ ꯀꯟꯗꯤꯁꯅꯦꯜ ꯑꯣꯏꯅꯥ JSXꯗꯥ ꯂꯩ꯫ ꯁ꯭ꯇꯦꯞ-ꯁ꯭ꯀꯤꯄꯤꯡ ꯂꯣꯖꯤꯛ — ꯑꯄꯨꯅꯕꯥ >= 100 ꯑꯣꯏꯕꯥ ꯃꯇꯃꯗꯥ ꯈꯛꯇꯗꯥ ꯊꯣꯀꯄꯥ ꯔꯤꯚꯤꯌꯨ ꯄꯦꯖ — showSubmit ꯚꯦꯔꯤꯑꯦꯕꯜ ꯑꯃꯁꯨꯡ ꯁ꯭ꯇꯦꯞ 3ꯗꯥ ꯂꯩꯕꯥ ꯔꯦꯟꯗꯔ ꯀꯟꯗꯤꯁꯟꯗꯥ ꯑꯦꯝꯕꯦꯗ ꯇꯧꯏ꯫ ꯅꯦꯚꯤꯒꯦꯁꯟ ꯃꯁꯥꯃꯛ ꯑꯁꯤ ꯑꯩꯈꯣꯌꯅꯥ ꯃꯦꯅꯨꯑꯦꯜ ꯑꯣꯏꯅꯥ ꯍꯦꯅꯒꯠꯂꯛꯂꯤꯕꯥ useState ꯀꯥꯎꯟꯇꯔ ꯑꯃꯈꯛꯇꯅꯤ꯫ ꯔꯤꯑꯦꯛꯇ ꯀ꯭ꯕꯦꯔꯤꯅꯥ ꯑꯃꯨꯛ ꯍꯟꯅꯥ ꯍꯣꯠꯅꯕꯥ, ꯀꯦꯁ ꯇꯧꯕꯥ, ꯑꯃꯁꯨꯡ ꯏꯅꯚꯦꯂꯤꯗꯦꯁꯟ ꯍꯦꯟꯗꯜ ꯇꯧꯏ꯫ ꯐꯣꯔꯝ ꯑꯁꯤꯅꯥ ꯚꯦꯂꯤꯗꯦꯠ ꯇꯧꯔꯕꯥ ꯗꯦꯇꯥꯒꯥ ꯂꯣꯌꯅꯅꯥ mutation.mutate ꯈꯛꯇꯃꯛ ꯀꯧꯏ꯫
ꯃꯁꯤꯒꯤ ꯃꯅꯨꯡꯗꯥ ꯑꯃꯠꯇꯥ ꯑꯔꯥꯅꯕꯥ ꯅꯠꯇꯦ, ꯃꯁꯥ ꯃꯊꯟꯇꯥ꯫ ꯃꯁꯤ ꯍꯧꯖꯤꯀꯁꯨ ꯏꯗꯤꯑꯣꯃꯦꯇꯤꯛ ꯔꯤꯑꯦꯛꯇ ꯑꯣꯏꯔꯤ, ꯑꯃꯁꯨꯡ ꯀꯝꯄꯣꯅꯦꯟꯇ ꯑꯁꯤ ꯑꯥꯔ.ꯑꯩꯆ.ꯑꯦꯐ.ꯅꯥ ꯃꯇꯧ ꯀꯔꯝꯅꯥ ꯔꯤ-ꯔꯦꯟꯗꯔꯁꯤꯡ ꯑꯥꯏꯁꯣꯂꯦꯠ ꯇꯧꯕꯒꯦ ꯍꯥꯌꯕꯗꯨꯅꯥ ꯃꯔꯝ ꯑꯣꯏꯗꯨꯅꯥ ꯌꯥꯝꯅꯥ ꯄꯔꯐꯣꯃꯦꯟꯁ ꯇꯧꯔꯤ꯫ ꯑꯗꯨꯕꯨ ꯀꯔꯤꯒꯨꯝꯕꯥ ꯅꯍꯥꯛꯅꯥ ꯃꯁꯤ ꯏꯈꯤꯗꯕꯥ ꯃꯤꯑꯣꯏ ꯑꯃꯗꯥ ꯁꯤꯟꯅꯔꯒꯥ ꯔꯤꯚꯤꯌꯨ ꯄꯦꯖ ꯑꯁꯤ ꯀꯔꯤ ꯀꯟꯗꯤꯁꯅꯁꯤꯡꯗꯥ ꯊꯣꯛꯂꯤꯕꯅꯣ ꯍꯥꯌꯕꯗꯨ ꯐꯣꯡꯗꯣꯛꯅꯕꯥ ꯍꯥꯌꯔꯕꯗꯤ, ꯃꯈꯣꯌꯅꯥ showSubmit, ꯁ꯭ꯇꯦꯞ ꯳ꯒꯤ ꯔꯦꯟꯗꯔ ꯀꯟꯗꯤꯁꯟ, ꯑꯃꯁꯨꯡ nav ꯕꯇꯟ ꯂꯣꯖꯤꯀꯀꯤ ꯈꯨꯠꯊꯥꯡꯗꯥ ꯇ꯭ꯔꯦꯁ ꯇꯧꯒꯗꯕꯅꯤ — ꯇꯣꯉꯥꯅꯕꯥ ꯃꯐꯝ ꯑꯍꯨꯝ — ꯂꯥꯏꯟ ꯑꯃꯗꯥ ꯍꯥꯌꯕꯥ ꯌꯥꯕꯥ ꯔꯨꯜ ꯑꯃꯥ ꯑꯃꯨꯛ ꯍꯟꯅꯥ ꯁꯦꯃꯒꯠꯅꯕꯥ꯫ ꯐꯣꯔꯝ ꯑꯗꯨꯅꯥ ꯊꯕꯛ ꯇꯧꯏ, ꯍꯣꯌ, ꯑꯗꯨꯕꯨ ꯂꯃꯆꯠ-ꯁꯥꯖꯠ ꯑꯗꯨꯗꯤ ꯁꯤꯁ꯭ꯇꯦꯝ ꯑꯃꯥ ꯑꯣꯏꯅꯥ ꯇꯁꯦꯡꯅꯥ ꯌꯦꯡꯁꯤꯅꯕꯥ ꯌꯥꯕꯥ ꯅꯠꯇꯦ꯫ ꯃꯁꯤ ꯃꯦꯟꯇꯦꯜ ꯑꯣꯏꯅꯥ ꯑꯦꯛꯁꯦꯁꯤꯕꯜ ꯇꯧꯒꯗꯕꯅꯤ꯫ ꯃꯁꯤꯗꯒꯤ ꯍꯦꯟꯅꯥ ꯃꯔꯨꯑꯣꯏꯕꯗꯤ ꯃꯁꯤ ꯍꯣꯡꯗꯣꯀꯄꯗꯥ ꯏꯟꯖꯤꯅꯤꯌꯔꯤꯡꯒꯤ ꯁꯔꯨꯛ ꯌꯥꯕꯥ ꯃꯊꯧ ꯇꯥꯏ꯫ ꯔꯤꯚꯤꯌꯨ ꯁ꯭ꯇꯦꯞ ꯑꯗꯨ ꯎꯠꯄꯥ ꯃꯇꯃꯗꯥ ꯑꯦꯗꯖꯁ꯭ꯠ ꯇꯧꯕꯒꯨꯝꯕꯥ ꯑꯄꯤꯀꯄꯥ ꯇ꯭ꯌꯨꯏꯛ ꯑꯃꯅꯥ ꯐꯥꯎꯕꯗꯤ ꯀꯝꯄꯣꯅꯦꯟꯇ ꯑꯗꯨ ꯑꯦꯗꯤꯠ ꯇꯧꯕꯥ, ꯚꯦꯂꯤꯗꯦꯁꯟ ꯑꯄꯗꯦꯠ ꯇꯧꯕꯥ, ꯄꯨꯜ ꯔꯤꯛꯕꯦꯁ꯭ꯠ ꯑꯃꯥ ꯍꯥꯡꯗꯣꯀꯄꯥ, ꯔꯤꯚꯤꯌꯨ ꯉꯥꯏꯕꯥ, ꯑꯃꯁꯨꯡ ꯑꯃꯨꯛ ꯍꯟꯅꯥ ꯗꯤꯞꯂꯣꯏ ꯇꯧꯕꯥ ꯍꯥꯌꯕꯁꯤꯅꯤ꯫ ꯈꯪꯖꯤꯅꯒꯗꯕꯥ 2: ꯁ꯭ꯀꯤꯝ-ꯗ꯭ꯔꯥꯏꯚꯟ (ꯁꯔꯚꯦꯖꯦ.ꯑꯦꯁ.) ꯍꯧꯖꯤꯛ ꯁ꯭ꯀꯤꯝ ꯑꯃꯥ ꯁꯤꯖꯤꯟꯅꯗꯨꯅꯥ ꯆꯞ ꯃꯥꯟꯅꯕꯥ ꯐ꯭ꯂꯣ ꯑꯗꯨ ꯁꯦꯃꯒꯠꯂꯁꯤ꯫ ꯏꯅꯁ꯭ꯇꯣꯂꯦꯁꯟ ꯇꯧꯕꯥ꯫ npm ꯁꯔꯚꯦ-ꯀꯣꯔ ꯁꯔꯚꯦ-ꯔꯤꯑꯦꯛꯇ-ꯎꯏ @tanstack/react-query ꯏꯅꯁ꯭ꯇꯣꯜ ꯇꯧꯕꯥ꯫
survey-coreꯁꯔꯚꯦꯖꯦ.ꯑꯦꯁ.ꯀꯤ ꯐꯣꯔꯝ ꯔꯦꯟꯗꯔ ꯇꯧꯕꯗꯥ ꯄꯥꯋꯔ ꯄꯤꯔꯤꯕꯥ ꯑꯦꯝ.ꯑꯥꯏ.ꯇꯤ.ꯅꯥ ꯂꯥꯏꯁꯦꯟꯁ ꯇꯧꯔꯕꯥ ꯄ꯭ꯂꯦꯠꯐꯣꯔꯝ-ꯏꯟꯗꯤꯄꯦꯟꯗꯦꯟꯇ ꯔꯅꯇꯥꯏꯝ ꯏꯟꯖꯤꯟ — ꯃꯐꯝ ꯑꯁꯤꯗꯥ ꯑꯩꯈꯣꯌꯅꯥ ꯃꯤꯠꯌꯦꯡ ꯆꯪꯂꯤꯕꯥ ꯁꯔꯨꯛ ꯑꯗꯨ꯫ ꯃꯁꯤꯅꯥ JSON ꯁ꯭ꯀꯤꯝ ꯑꯃꯥ ꯂꯧꯏ, ꯃꯁꯤꯗꯒꯤ ꯏꯟꯇꯔꯅꯦꯜ ꯃꯣꯗꯦꯜ ꯑꯃꯥ ꯁꯦꯝꯃꯤ, ꯑꯃꯁꯨꯡ ꯅꯍꯥꯛꯀꯤ ꯔꯤꯑꯦꯛꯇ ꯀꯝꯄꯣꯅꯦꯟꯇꯇꯥ ꯑꯇꯣꯞꯄꯥ ꯃꯑꯣꯡ ꯑꯃꯗꯥ ꯍꯤꯡꯒꯗꯕꯥ ꯄꯨꯝꯅꯃꯛ ꯍꯦꯟꯗꯜ ꯇꯧꯏ: ꯚꯤꯖꯤꯕꯤꯂꯤꯇꯤ ꯑꯦꯛꯁꯞꯔꯦꯁꯅꯁꯤꯡ ꯏꯚꯥꯜꯌꯨꯑꯦꯠ ꯇꯧꯕꯥ, ꯂꯧꯊꯣꯀꯄꯥ ꯚꯦꯜꯌꯨꯁꯤꯡ ꯀꯝꯞꯌꯨꯠ ꯇꯧꯕꯥ, ꯄꯦꯖ ꯁ꯭ꯇꯦꯠ ꯃꯦꯅꯦꯖ ꯇꯧꯕꯥ, ꯚꯦꯂꯤꯗꯦꯁꯟ ꯇ꯭ꯔꯦꯛ ꯇꯧꯕꯥ, ꯑꯃꯁꯨꯡ ꯀꯔꯤ ꯄꯦꯖꯁꯤꯡ ꯇꯁꯦꯡꯅꯥ ꯎꯠꯈꯤꯕꯒꯦ ꯍꯥꯌꯕꯗꯨ ꯌꯦꯡꯂꯒꯥ “ꯃꯄꯨꯡ ꯐꯥꯕꯥ” ꯍꯥꯌꯕꯁꯤ ꯀꯔꯤꯅꯣ ꯍꯥꯌꯕꯗꯨ ꯂꯦꯄꯊꯣꯀꯄꯥ꯫
survey-react-uiꯃꯣꯗꯦꯜ ꯑꯗꯨꯕꯨ ꯔꯤꯑꯦꯛꯇꯀꯥ ꯁꯝꯅꯍꯜꯂꯤꯕꯥ UI / ꯔꯦꯟꯗꯔ ꯇꯧꯕꯥ ꯂꯦꯌꯔ꯫ ꯃꯁꯤ ꯇꯉꯥꯏꯐꯗꯅꯥ
ꯄꯨꯟꯅꯥ, ꯃꯈꯣꯌꯅꯥ ꯑꯗꯣꯃꯗꯥ ꯀꯟꯠꯔꯣꯜ ꯐ꯭ꯂꯣꯒꯤ ꯂꯥꯏꯟ ꯑꯃꯈꯛꯇꯃꯛ ꯏꯕꯥ ꯌꯥꯗꯅꯥ ꯃꯄꯨꯡ ꯐꯥꯅꯥ ꯐꯉ꯭ꯀꯁ꯭ꯅꯦꯜ ꯑꯣꯏꯕꯥ, ꯃꯜꯇꯤ-ꯄꯦꯖ ꯐꯣꯔꯝ ꯔꯅꯇꯥꯏꯝ ꯑꯃꯥ ꯄꯤꯔꯤ꯫ ꯁ꯭ꯀꯤꯝ ꯐꯣꯔꯃꯦꯠ ꯃꯁꯥꯃꯛ, ꯃꯃꯥꯡꯗꯥ ꯍꯥꯌꯈꯤꯕꯒꯨꯝꯅꯥ, JSON ꯈꯛꯇꯅꯤ — DSL ꯅꯠꯠꯔꯒꯥ ꯄ꯭ꯔꯣꯄꯔꯇꯤ ꯑꯣꯏꯕꯥ ꯑꯃꯠꯇꯥ ꯂꯩꯇꯦ꯫ ꯅꯍꯥꯛꯅꯥ ꯃꯁꯤ ꯏꯅꯂꯥꯏꯟ ꯇꯧꯕꯥ ꯌꯥꯏ, ꯐꯥꯏꯜ ꯑꯃꯗꯒꯤ ꯏꯝꯄꯣꯔꯠ ꯇꯧꯕꯥ ꯌꯥꯏ, API ꯑꯃꯗꯒꯤ ꯂꯧꯕꯥ ꯌꯥꯏ, ꯅꯠꯠꯔꯒꯥ ꯗꯦꯇꯥꯕꯦꯖ ꯀꯣꯂꯝ ꯑꯃꯗꯥ ꯁ꯭ꯇꯣꯔ ꯇꯧꯕꯥ ꯌꯥꯏ ꯑꯃꯁꯨꯡ ꯔꯅꯇꯥꯏꯃꯗꯥ ꯍꯥꯏꯗ꯭ꯔꯦꯠ ꯇꯧꯕꯥ ꯌꯥꯏ꯫ ꯆꯞ ꯃꯥꯟꯅꯕꯥ ꯃꯑꯣꯡ, ꯗꯦꯇꯥ ꯑꯣꯏꯅꯥ꯫ ꯃꯐꯝ ꯑꯁꯤꯗꯥ ꯆꯞ ꯃꯥꯟꯅꯕꯥ ꯃꯑꯣꯡ ꯑꯁꯤ ꯂꯩꯔꯤ, ꯃꯁꯤꯒꯤ ꯃꯇꯝ ꯑꯁꯤꯗꯥ JSON ꯑꯣꯕꯖꯦꯛꯇ ꯑꯃꯥ ꯑꯣꯏꯅꯥ ꯐꯣꯡꯗꯣꯛꯂꯤ꯫ ꯁ꯭ꯀꯤꯝ ꯑꯁꯤꯅꯥ ꯄꯨꯝꯅꯃꯛ ꯂꯦꯄꯊꯣꯀꯏ: ꯁ꯭ꯠꯔꯀꯆꯔ, ꯚꯦꯂꯤꯗꯦꯁꯟ, ꯚꯤꯖꯤꯕꯤꯂꯤꯇꯤ ꯔꯨꯂꯁꯤꯡ, ꯂꯧꯊꯣꯀꯄꯥ ꯀꯦꯂꯀꯨꯂꯦꯁꯅꯁꯤꯡ, ꯄꯦꯖ ꯅꯦꯚꯤꯒꯦꯁꯟ — ꯑꯃꯁꯨꯡ ꯃꯁꯤ ꯔꯅꯇꯥꯏꯃꯗꯥ ꯏꯚꯥꯂꯨꯑꯦꯠ ꯇꯧꯕꯥ ꯃꯣꯗꯦꯜ ꯑꯃꯗꯥ ꯄꯤꯔꯤ꯫ ꯃꯗꯨ ꯃꯄꯨꯡ ꯐꯥꯅꯥ ꯀꯔꯝꯅꯥ ꯑꯣꯏꯒꯅꯤ ꯍꯥꯌꯕꯁꯤ ꯃꯈꯥꯗꯥ ꯄꯤꯔꯤ:
export const surveySchema = { title: "ꯑꯣꯔꯗꯔ ꯐ꯭ꯂꯣ", showProgressBar: "ꯃꯊꯛꯀꯤ", ꯄꯦꯖꯁꯤꯡ: [ { ꯃꯃꯤꯡ: "ꯑꯀꯨꯞꯄꯥ ꯃꯔꯣꯂꯁꯤꯡ", ꯑꯦꯂꯤꯃꯦꯟꯇꯁꯤꯡ: [ { ꯃꯈꯜ: "ꯇꯦꯛꯁꯠ", ꯃꯃꯤꯡ: "ꯑꯍꯥꯅꯕꯥ ꯃꯃꯤꯡ", isRequired: true }, { ꯃꯈꯜ: "ꯇꯦꯛꯁꯠ", ꯃꯃꯤꯡ: "ꯏꯃꯦꯜ", inputType: "ꯏꯃꯦꯜ", isRequired: ꯑꯆꯨꯝꯕꯥ, ꯚꯦꯂꯤꯗꯦꯇꯔꯁꯤꯡ: [{ ꯃꯈꯜ: "ꯏꯃꯦꯜ", ꯇꯦꯛꯁ: "ꯑꯁꯣꯌꯕꯥ ꯏꯃꯦꯜ" }] } ] }, { ꯃꯃꯤꯡ: "ꯑꯣꯔꯗꯔ", ꯑꯦꯂꯤꯃꯦꯟꯇꯁꯤꯡ: [ { ꯃꯈꯜ: "ꯇꯦꯛꯁꯠ", ꯃꯃꯤꯡ: "ꯃꯃꯜ", inputType: "ꯅꯝꯕꯔ", defaultValue: 0 }, { type: "text", ꯃꯃꯤꯡ: "quantity", inputType: "ꯅꯝꯕꯔ", defaultValue: 1 }, { type: "dropdown",ꯃꯃꯤꯡ: "taxRate", defaultValue: 0.1, ꯆꯌꯦꯠꯅꯕꯥ: [ { ꯚꯦꯜꯌꯨ: 0.05, ꯇꯦꯛꯁꯠ: "5%" }, { ꯚꯦꯜꯌꯨ: 0.1, ꯇꯦꯛꯁꯠ: "10%" }, { ꯚꯦꯜꯌꯨ: 0.15, ꯇꯦꯛꯁꯠ: "15%" } ] }, { ꯃꯈꯜ: "ꯑꯦꯛꯁꯞꯔꯦꯁꯟ", ꯃꯃꯤꯡ: "ꯁꯕꯇꯣꯇꯦꯜ", ꯑꯦꯛꯁꯞꯔꯦꯁꯟ: "{ꯃꯃꯜ} {ꯃꯌꯥꯏ ꯑꯣꯏꯕꯥ}" }, { ꯃꯈꯜ: "ꯑꯦꯛꯁꯞꯔꯦꯁꯟ", ꯃꯃꯤꯡ: "ꯇꯦꯛꯁ", ꯑꯦꯛꯁꯞꯔꯦꯁꯟ: "{ꯁꯕꯇꯣꯇꯦꯜ} {taxRate}" }, { ꯃꯈꯜ: "ꯑꯦꯛꯁꯞꯔꯦꯁꯟ", ꯃꯃꯤꯡ: "ꯑꯄꯨꯅꯕꯥ", ꯑꯦꯛꯁꯞꯔꯦꯁꯟ: "{ꯁꯕꯇꯣꯇꯦꯜ} + {ꯇꯦꯛꯁ}" } ] }, { ꯃꯃꯤꯡ: "ꯑꯦꯀꯥꯎꯟꯇ", ꯑꯦꯂꯤꯃꯦꯟꯇꯁꯤꯡ: [ { ꯃꯈꯜ: "ꯔꯦꯗꯤꯑꯣꯒ꯭ꯔꯨꯞ", ꯃꯃꯤꯡ: "hasAccount", ꯆꯌꯦꯠꯅꯕꯥ: ["ꯍꯣꯌ", "ꯅꯠꯇꯦ"] }, { ꯃꯈꯜ: "ꯇꯦꯛꯁꯠ", ꯃꯃꯤꯡ: "username", visibleIf: "{hasAccount} = 'ꯍꯣꯌ'", isRequired: true }, { ꯃꯈꯜ: "ꯇꯦꯛꯁꯠ", ꯃꯃꯤꯡ: "ꯄꯥꯁꯋꯥꯔꯗ", inputType: "ꯄꯥꯁꯋꯥꯔꯗ", visibleIf: "{hasAccount} = 'ꯍꯣꯌ'", isRequired: true, ꯚꯦꯂꯤꯗꯦꯇꯔꯁꯤꯡ: [{ type: "text", minLength: 6, text: "ꯑꯛꯁꯔ ꯶ꯇꯥ ꯌꯥꯑꯣꯕꯥ" } ] }, { ꯃꯈꯜ: "ꯔꯦꯇꯤꯡ", ꯃꯃꯤꯡ: "ꯑꯄꯥꯝꯕꯥ", rateMin: 1, rateMax: 5 }, { ꯃꯈꯜ: "ꯀꯃꯦꯟꯇ", ꯃꯃꯤꯡ: "ꯄꯣꯖꯤꯇꯤꯕꯐꯤꯗꯕꯦꯛ", visibleIf: "{ꯑꯁꯥꯕꯥ} >= 4" }, { ꯃꯈꯜ: "ꯀꯃꯦꯟꯇ", ꯃꯃꯤꯡ: "ꯑꯍꯣꯡꯕꯥ ꯐꯤꯗꯕꯦꯛ", ꯚꯤꯖꯤꯕꯜIf: "{ꯑꯁꯥꯑꯣꯕꯥ} <= 2" } ] }, { ꯃꯃꯤꯡ: "ꯔꯤꯚꯤꯌꯨ", visibleIf: "{ꯑꯄꯨꯅꯕꯥ} >= ꯱꯰꯰", ꯑꯦꯂꯤꯃꯦꯟꯇꯁꯤꯡ: [] } ]};
ꯃꯁꯤ ꯃꯤꯀꯨꯞ ꯑꯃꯒꯤ ꯑꯣꯏꯅꯥ ꯑꯥꯔ.ꯑꯩꯆ.ꯑꯦꯐ.ꯀꯤ ꯚꯔꯖꯅꯒꯥ ꯆꯥꯡꯗꯝꯅꯕꯤꯌꯨ꯫
ꯀꯟꯗꯤꯁꯅꯦꯜ ꯑꯣꯏꯅꯥ ꯌꯨꯖꯔꯅꯦꯝ ꯑꯃꯁꯨꯡ ꯄꯥꯁꯋꯥꯔꯗ ꯃꯊꯧ ꯇꯥꯕꯥ superRefine ꯕ꯭ꯂꯣꯛ ꯑꯗꯨ ꯂꯣꯏꯔꯦ꯫ visibleIf: "{hasAccount} = 'Yes'" isRequired: trueꯒꯥ ꯂꯣꯌꯅꯅꯥ ꯄꯨꯟꯅꯥ ꯍꯦꯟꯗꯜ ꯇꯧꯏ, ꯐꯤꯜꯗ ꯃꯁꯥꯃꯛꯇꯗꯥ, ꯅꯍꯥꯛꯅꯥ ꯃꯈꯣꯌꯕꯨ ꯐꯪꯒꯅꯤ ꯍꯥꯌꯅꯥ ꯊꯥꯖꯕꯥ ꯃꯐꯝ ꯑꯗꯨꯗꯥ. ꯁꯕꯇꯣꯇꯦꯜ, ꯇꯦꯛꯁ, ꯑꯃꯁꯨꯡ ꯇꯣꯇꯦꯜ ꯀꯝꯞꯌꯨꯠ ꯇꯧꯈꯤꯕꯥ useWatch + useMemo ꯆꯦꯟ ꯑꯁꯤ ꯑꯃꯒꯥ ꯑꯃꯒꯥ ꯃꯃꯤꯡ ꯔꯤꯐꯔꯦꯟꯁ ꯇꯧꯕꯥ ꯑꯦꯛꯁꯞꯔꯦꯁꯟ ꯐꯤꯜꯗ ꯑꯍꯨꯃꯅꯥ ꯃꯍꯨꯠ ꯁꯤꯜꯂꯤ꯫ ꯔꯤꯚꯤꯌꯨ ꯄꯦꯖ ꯀꯟꯗꯤꯁꯟ, ꯃꯗꯨꯗꯤ RHF ꯚꯔꯖꯅꯗꯥ ꯁ꯭ꯇꯦꯞ 3 ꯔꯦꯟꯗꯔ ꯕ꯭ꯔꯥꯟꯆ, showSubmitꯒꯤ ꯈꯨꯠꯊꯥꯡꯗꯥ ꯇ꯭ꯔꯦꯁꯤꯡ ꯇꯧꯕꯈꯛꯇꯅꯥ ꯔꯤꯀꯟꯁꯠꯔꯛꯁꯟ ꯇꯧꯕꯥ ꯌꯥꯏ꯫ ꯑꯃꯁꯨꯡ ꯑꯔꯣꯏꯕꯗꯥ, nav ꯕꯇꯟ ꯂꯣꯖꯤꯛ ꯑꯁꯤ ꯄꯦꯖ ꯑꯣꯕꯖꯦꯛꯇꯇꯥ ꯂꯩꯕꯥ visibleIf ꯄ꯭ꯔꯣꯄꯔꯇꯤ ꯑꯃꯈꯛꯇꯅꯤ꯫
ꯆꯞ ꯃꯥꯟꯅꯕꯥ ꯂꯣꯖꯤꯛ ꯑꯁꯤꯁꯨ ꯂꯩꯔꯤ꯫ ꯃꯁꯤ ꯈꯛꯇꯅꯤ ꯃꯗꯨꯗꯤ ꯁ꯭ꯀꯤꯝ ꯑꯁꯤꯅꯥ ꯃꯁꯤꯕꯨ ꯀꯝꯄꯣꯅꯦꯟꯇ ꯄꯨꯝꯅꯃꯛꯇꯥ ꯁꯟꯗꯣꯀꯄꯒꯤ ꯃꯍꯨꯠꯇꯥ, ꯑꯥꯏꯁꯣꯂꯦꯁꯟꯗꯥ ꯎꯕꯥ ꯐꯪꯂꯤꯕꯥ ꯃꯐꯃꯗꯥ ꯂꯩꯕꯥ ꯃꯐꯝ ꯑꯃꯥ ꯄꯤꯕꯅꯤ꯫ ꯃꯁꯤꯗꯁꯨ ꯅꯠꯇꯅꯥ, ꯁ꯭ꯀꯤꯝ ꯑꯁꯤꯅꯥ ꯃꯈꯜ: ꯁꯕꯇꯣꯇꯦꯜ, ꯇꯦꯛꯁ, ꯑꯃꯁꯨꯡ ꯇꯣꯇꯦꯂꯒꯤꯗꯃꯛ ‘ꯑꯦꯛꯁꯞꯔꯦꯁꯟ’ ꯁꯤꯖꯤꯟꯅꯩ ꯍꯥꯌꯕꯁꯤꯁꯨ ꯈꯪꯖꯤꯅꯕꯤꯌꯨ꯫ ꯑꯦꯛꯁꯞꯔꯦꯁꯟ ꯑꯁꯤ ꯔꯤꯗ-ꯑꯣꯅꯂꯤ ꯑꯣꯏ ꯑꯃꯁꯨꯡ ꯃꯔꯨꯑꯣꯏꯅꯥ ꯀꯦꯂꯀꯨꯂꯦꯠ ꯇꯧꯔꯕꯥ ꯚꯦꯜꯌꯨꯁꯤꯡ ꯎꯠꯄꯗꯥ ꯁꯤꯖꯤꯟꯅꯩ꯫ ꯁꯔꯚꯦꯖꯦꯑꯦꯁꯅꯥ ꯁ꯭ꯇꯦꯇꯤꯛ ꯀꯟꯇꯦꯟꯇꯀꯤꯗꯃꯛ ꯃꯈꯜ: ‘html’ꯁꯨ ꯁꯄꯣꯔꯠ ꯇꯧꯏ, ꯑꯗꯨꯕꯨ ꯀꯦꯂꯀꯨꯂꯦꯠ ꯇꯧꯔꯕꯥ ꯚꯦꯜꯌꯨꯁꯤꯡꯒꯤ ꯑꯣꯏꯅꯗꯤ, ꯑꯦꯛꯁꯞꯔꯦꯁꯟ ꯑꯁꯤ ꯑꯆꯨꯝꯕꯥ ꯈꯅꯕꯅꯤ꯫ ꯍꯧꯖꯤꯛ ꯔꯤꯑꯦꯛꯇ ꯁꯥꯏꯗꯀꯤꯗꯃꯛ꯫ ꯔꯦꯟꯗꯔ ꯑꯃꯁꯨꯡ ꯁꯕꯃꯤꯁꯟ ꯇꯧꯕꯥ꯫ ꯌꯥꯝꯅꯥ ꯏꯆꯝ ꯆꯝꯕꯥ꯫ ꯅꯍꯥꯛꯀꯤ APIꯗꯥ ꯆꯞ ꯃꯥꯟꯅꯕꯥ ꯃꯑꯣꯡꯗꯥ ꯋꯥꯏꯔ ꯑꯣꯟꯀꯝꯞꯂꯤꯠ ꯇꯧꯔꯣ — useMutation ꯅꯠꯠꯔꯒꯥ ꯄ꯭ꯂꯦꯟ ꯐꯦꯆꯀꯤ ꯈꯨꯠꯊꯥꯡꯗꯥ:
import { useState, useEffect, useRef } from "react";import { useMutation } from "@tanstack/react-query";import { Model } from "ꯁꯔꯚꯦ-ꯀꯣꯔ";import { ꯁꯔꯚꯦ } from "ꯁꯔꯚꯦ-ꯔꯤꯑꯦꯛꯇ-ꯎꯏ";ꯏꯝꯄꯣꯔꯠ "ꯁꯔꯚꯦ-ꯀꯣꯔ/ꯁꯔꯚꯦ-ꯀꯣꯔ.ꯁꯤ.ꯑꯦꯁ.";
export function SurveyForm() { const [model] = useState(() => ꯑꯅꯧꯕꯥ ꯃꯣꯗꯦꯜ(ꯁꯔꯚꯦꯁ꯭ꯀꯤꯃꯥ));
const ꯃ꯭ꯌꯨꯇꯦꯁꯟ = ꯌꯨꯖꯃꯎꯇꯦꯁꯟ({ mutationFn: ꯑꯦꯁꯤꯅꯛ (ꯗꯦꯇꯥ) => { const res = await fetch("/api/ꯑꯣꯔꯗꯔꯁꯤꯡ", { ꯃꯦꯊꯗ: "ꯄꯣꯁ꯭ꯠ", headers: { "ꯀꯟꯇꯦꯟꯇ-ꯇꯥꯏꯞ": "ꯑꯦꯞꯂꯤꯀꯦꯁꯟ/json" }, ꯍꯀꯆꯥꯡ: JSON.stringify(ꯗꯦꯇꯥ), }); if (!res.ok) throw new Error("ꯁꯕꯃꯤꯠ ꯇꯧꯕꯥ ꯉꯃꯗꯦ"); ꯔꯤꯇꯔꯟ ꯇꯧꯕꯥ res.json(); }, ꯴. });
const mutationRef = ꯌꯨꯖꯔꯤꯐ (ꯃ꯭ꯌꯨꯇꯦꯁꯟ); mutationRef.current = ꯃ꯭ꯌꯨꯇꯦꯁꯟ ꯇꯧꯕꯥ; useEffect(() => { const ꯍꯦꯟꯗꯂꯔ = (ꯁꯦꯟꯗꯔ) => mutationRef.current.mutate(ꯁꯦꯟꯗꯔ.ꯗꯦꯇꯥ); ꯃꯣꯗꯦꯜ.ꯑꯣꯅꯀꯝꯞꯂꯤꯠ.ꯑꯦꯗ(ꯍꯦꯟꯗꯂꯔ); ꯔꯤꯇꯔꯟ () => ꯃꯣꯗꯦꯜ.ꯑꯣꯅꯀꯝꯞꯂꯤꯠ.ꯔꯤꯃꯨꯚ(ꯍꯦꯟꯗꯂꯔ); }, [ꯃꯣꯗꯦꯜ]); // refꯅꯥ ꯔꯦꯟꯗꯔ ꯈꯨꯗꯤꯡꯃꯛꯇꯥ ꯍꯦꯟꯗꯂꯔ ꯑꯃꯨꯛ ꯍꯟꯅꯥ ꯔꯦꯖꯤꯁ꯭ꯇꯔ ꯇꯧꯕꯥ ꯊꯤꯡꯏ (ꯃ꯭ꯌꯨꯇꯦꯁꯟ ꯑꯣꯕꯖꯦꯛꯇ ꯑꯥꯏꯗꯦꯟꯇꯤꯇꯤ ꯍꯣꯡꯏ)
ꯔꯤꯇꯔꯟ ( <> <ꯁꯔꯚꯦ ꯃꯣꯗꯦꯜ={ꯃꯣꯗꯦꯜ} /> {mutation.isError &&
ꯄꯦꯟ ꯁꯔꯚꯦꯖꯦꯑꯦꯁ-꯰꯳-ꯁꯔꯚꯦꯖꯦꯑꯦꯁ [ꯐꯣꯔꯛ ꯇꯧꯔꯕꯥ] ꯑꯁꯤ ꯁꯤꯛꯁꯊꯦꯛꯁꯇꯤꯅꯛꯁꯟꯅꯥ ꯌꯦꯡꯕꯤꯌꯨ꯫
onComplete ꯐꯥꯏꯔ ꯇꯧꯏ ꯌꯨꯖꯔꯅꯥ ꯑꯔꯣꯏꯕꯥ ꯎꯕꯥ ꯐꯪꯂꯤꯕꯥ ꯄꯦꯖ ꯑꯗꯨꯒꯤ ꯑꯔꯣꯏꯕꯗꯥ ꯌꯧꯔꯀꯄꯥ ꯃꯇꯃꯗꯥ꯫ ꯑꯗꯨꯅꯥ ꯀꯔꯤꯒꯨꯝꯕꯥ ꯑꯄꯨꯅꯕꯥ ꯑꯁꯤ ꯀꯩꯗꯧꯉꯩꯗꯥ ꯱꯰꯰ ꯂꯥꯟꯊꯣꯛꯠꯔꯕꯗꯤ ꯑꯃꯁꯨꯡ ꯔꯤꯚꯤꯌꯨ ꯄꯦꯖ ꯑꯗꯨ ꯂꯥꯞꯅꯥ ꯂꯩꯔꯕꯗꯤ, ꯃꯁꯤꯅꯥ ꯍꯧꯖꯤꯀꯁꯨ ꯃꯌꯦꯛ ꯁꯦꯡꯅꯥ ꯐꯥꯏꯔ ꯇꯧꯏ ꯃꯔꯃꯗꯤ ꯁꯔꯚꯦꯖꯦꯑꯦꯁꯅꯥ “ꯑꯔꯣꯏꯕꯥ ꯄꯦꯖ” ꯍꯥꯌꯕꯁꯤ ꯀꯔꯤꯅꯣ ꯍꯥꯌꯕꯗꯨ ꯂꯦꯄꯊꯣꯛꯠꯔꯤꯉꯩꯒꯤ ꯃꯃꯥꯡꯗꯥ ꯚꯤꯖꯤꯕꯤꯂꯤꯇꯤ ꯏꯚꯥꯂꯨꯑꯦꯠ ꯇꯧꯏ꯫ ꯃꯗꯨꯒꯤ ꯃꯇꯨꯡꯗꯥ, sender.dataꯗꯥ ꯑꯍꯥꯅꯕꯥ ꯀ꯭ꯂꯥꯁꯀꯤ ꯐꯤꯜꯗ ꯑꯣꯏꯅꯥ ꯀꯦꯂꯀꯨꯂꯦꯠ ꯇꯧꯔꯕꯥ ꯚꯦꯜꯌꯨꯁꯤꯡ (ꯁꯕꯇꯣꯇꯦꯜ, ꯇꯦꯛꯁ, ꯇꯣꯇꯦꯜ)ꯒꯥ ꯂꯣꯌꯅꯅꯥ ꯄꯥꯎꯈꯨꯝ ꯄꯨꯝꯅꯃꯛ ꯌꯥꯑꯣꯏ, ꯃꯔꯝ ꯑꯗꯨꯅꯥ API ꯄꯦꯂꯣꯗ ꯑꯁꯤ RHF ꯚꯔꯁꯟꯅꯥ onSubmitꯗꯥ ꯃꯦꯅꯨꯑꯦꯜ ꯑꯣꯏꯅꯥ ꯑꯦꯁꯦꯝꯕꯜ ꯇꯧꯈꯤꯕꯥ ꯑꯗꯨꯒꯥ ꯃꯥꯟꯅꯩ꯫ ꯗꯤmutationRef ꯄꯦꯇꯔꯟ ꯑꯁꯤ ꯅꯍꯥꯛꯅꯥ ꯔꯦꯟꯗꯔ ꯈꯨꯗꯤꯡꯃꯛꯇꯥ ꯍꯣꯡꯂꯛꯂꯤꯕꯥ ꯚꯦꯜꯌꯨ ꯑꯃꯒꯤ ꯃꯊꯛꯇꯥ ꯁ꯭ꯇꯦꯕꯜ ꯏꯚꯦꯟꯇ ꯍꯦꯟꯗꯂꯔ ꯑꯃꯥ ꯃꯊꯧ ꯇꯥꯕꯥ ꯃꯐꯝ ꯑꯃꯍꯦꯛꯇꯗꯥ ꯌꯧꯔꯀꯄꯥ ꯑꯗꯨꯒꯥ ꯃꯥꯟꯅꯩ — ꯃꯁꯤꯒꯤ ꯃꯇꯥꯡꯗꯥ SurveyJS-ꯁ꯭ꯄꯦꯁꯤꯐꯤꯛ ꯑꯣꯏꯕꯥ ꯀꯔꯤꯁꯨ ꯂꯩꯇꯦ꯫
ꯔꯤꯑꯦꯛꯇ ꯀꯝꯄꯣꯅꯦꯟꯇ ꯑꯁꯤꯗꯥ ꯍꯧꯖꯤꯛꯇꯤ ꯕꯤꯖꯤꯅꯦꯁ ꯂꯣꯖꯤꯛ ꯑꯃꯠꯇꯥ ꯌꯥꯑꯣꯗ꯭ꯔꯦ꯫ useWatch, ꯀꯟꯗꯤꯁꯅꯦꯜ JSX, ꯁ꯭ꯇꯦꯞ ꯀꯥꯎꯟꯇꯔ, useMemo ꯆꯦꯟ, superRefine ꯑꯃꯠꯇꯥ ꯂꯩꯇꯦ꯫ ꯔꯤꯑꯦꯛꯇ ꯑꯁꯤꯅꯥ ꯇꯁꯦꯡꯅꯥ ꯑꯐꯕꯥ ꯊꯕꯛ ꯑꯗꯨ ꯇꯧꯔꯤ: ꯀꯝꯄꯣꯅꯦꯟꯇ ꯑꯃꯥ ꯔꯦꯟꯗꯔ ꯇꯧꯕꯥ ꯑꯃꯁꯨꯡ ꯑꯦ.ꯄꯤ.ꯑꯥꯏ. ꯔꯤꯑꯦꯛꯇꯀꯤ ꯃꯅꯨꯡꯗꯥ ꯀꯔꯤ ꯃꯨꯚ ꯇꯧꯈꯤꯕꯒꯦ?
ꯋꯥꯈꯜ ꯋꯥꯕꯥ꯫ ꯑꯥꯔ.ꯑꯩꯆ.ꯑꯦꯐ.ꯁ꯭ꯇꯦꯛ ꯇꯧꯕꯥ꯫ ꯁꯔꯚꯦꯖꯦ.ꯑꯦꯁ ꯚꯤꯖꯤꯕꯤꯂꯤꯇꯤ ꯂꯩꯕꯥ꯫ ꯖꯦ.ꯑꯦꯁ.ꯑꯦꯛꯁ.ꯀꯤ ꯁꯥꯈꯥꯁꯤꯡ꯫ ꯚꯤꯖꯤꯕꯜ ꯑꯣꯏꯔꯕꯗꯤ꯫ ꯂꯧꯊꯣꯀꯄꯥ ꯚꯦꯜꯌꯨꯁꯤꯡ꯫ useWatch / ꯌꯨꯖꯔꯃꯦꯃꯣ ꯁꯤꯖꯤꯟꯅꯧ꯫ ꯑꯦꯛꯁꯞꯔꯦꯁꯟ ꯇꯧꯕꯥ꯫ ꯀ꯭ꯔꯣꯁ-ꯐꯤꯜꯗ ꯔꯨꯂꯁꯤꯡ꯫ ꯁꯨꯄꯔꯔꯤꯐꯥꯏꯟ ꯇꯧꯕꯥ꯫ ꯁ꯭ꯀꯤꯃꯒꯤ ꯀꯟꯗꯤꯁꯅꯁꯤꯡ꯫ ꯅꯦꯚꯤꯒꯦꯁꯟ ꯇꯧꯕꯥ꯫ ꯁ꯭ꯇꯦꯞ ꯁ꯭ꯇꯦꯠ꯫ ꯄꯦꯖ ꯚꯤꯖꯤꯕꯜ ꯑꯣꯏꯔꯕꯗꯤ ꯔꯨꯜ ꯂꯣꯀꯦꯁꯟ ꯇꯧꯕꯥ꯫ ꯐꯥꯏꯂꯁꯤꯡꯒꯤ ꯃꯔꯛꯇꯥ ꯌꯦꯟꯊꯣꯀꯄꯥ꯫ ꯁ꯭ꯀꯤꯝ ꯑꯁꯤꯗꯥ ꯁꯦꯟꯠꯔꯦꯂꯥꯏꯖ ꯇꯧꯔꯕꯥ꯫
ꯔꯤꯑꯦꯛꯇꯇꯥ ꯂꯩꯔꯤꯕꯥ ꯑꯁꯤ ꯂꯦꯑꯥꯎꯠ, ꯁ꯭ꯇꯥꯏꯂꯤꯡ, ꯁꯕꯃꯤꯁꯟ ꯋꯥꯏꯔꯤꯡ, ꯑꯃꯁꯨꯡ ꯑꯦꯞ ꯏꯟꯇꯤꯒ꯭ꯔꯦꯁꯅꯅꯤ, ꯍꯥꯌꯕꯗꯤ ꯔꯤꯑꯦꯛꯇ ꯑꯁꯤ ꯇꯁꯦꯡꯅꯥ ꯗꯤꯖꯥꯏꯟ ꯇꯧꯈꯤꯕꯥ ꯄꯣꯠꯁꯤꯡꯅꯤ꯫ ꯑꯇꯣꯞꯄꯥ ꯄꯨꯝꯅꯃꯛ ꯁ꯭ꯀꯤꯝ ꯑꯁꯤꯗꯥ ꯆꯪꯁꯤꯜꯂꯀꯈꯤ, ꯑꯃꯁꯨꯡ ꯁ꯭ꯀꯤꯝ ꯑꯁꯤ JSON ꯑꯣꯕꯖꯦꯛꯇ ꯈꯛꯇꯅꯤ, ꯃꯔꯝ ꯑꯗꯨꯅꯥ ꯃꯁꯤ ꯗꯦꯇꯥꯕꯦꯖ ꯑꯃꯗꯥ ꯁ꯭ꯇꯣꯔ ꯇꯧꯕꯥ ꯌꯥꯏ, ꯅꯍꯥꯛꯀꯤ ꯑꯦꯞꯂꯤꯀꯦꯁꯟ ꯀꯣꯗꯇꯒꯤ ꯃꯅꯤꯡꯇꯝꯅꯥ ꯚꯔꯁꯟ ꯇꯧꯕꯥ ꯌꯥꯏ, ꯅꯠꯠꯔꯒꯥ ꯗꯤꯞꯂꯣꯏ ꯇꯧꯕꯒꯤ ꯃꯊꯧ ꯇꯥꯗꯅꯥ ꯏꯟꯇꯔꯅꯦꯜ ꯇꯨꯂꯤꯡꯒꯤ ꯈꯨꯠꯊꯥꯡꯗꯥ ꯑꯦꯗꯤꯠ ꯇꯧꯕꯥ ꯌꯥꯏ꯫ ꯔꯤꯚꯤꯌꯨ ꯄꯦꯖ ꯇ꯭ꯔꯤꯒꯔ ꯇꯧꯔꯤꯕꯥ ꯊ꯭ꯔꯦꯁꯍꯣꯜꯗ ꯑꯗꯨ ꯍꯣꯡꯗꯣꯀꯄꯥ ꯃꯊꯧ ꯇꯥꯕꯥ ꯄ꯭ꯔꯗꯛꯇ ꯃꯦꯅꯦꯖꯔ ꯑꯃꯅꯥ ꯀꯝꯄꯣꯅꯦꯟꯇ ꯑꯗꯨ ꯁꯣꯀꯍꯟꯗꯅꯥ ꯃꯗꯨ ꯇꯧꯕꯥ ꯌꯥꯏ꯫ ꯃꯗꯨ ꯐꯣꯔꯝ ꯕꯤꯍꯦꯕꯤꯌꯔ ꯑꯁꯤ ꯌꯥꯝꯅꯥ ꯊꯨꯅꯥ ꯍꯦꯅꯒꯠꯂꯀꯄꯥ ꯑꯃꯁꯨꯡ ꯃꯇꯝ ꯄꯨꯝꯅꯃꯛꯇꯥ ꯏꯟꯖꯤꯅꯤꯌꯔꯁꯤꯡꯅꯥ ꯊꯧꯒꯠꯄꯥ ꯉꯃꯗꯕꯥ ꯇꯤꯃꯁꯤꯡꯒꯤꯗꯃꯛꯇꯥ ꯑꯔꯊ ꯂꯩꯕꯥ ꯑꯣꯄꯔꯦꯁꯅꯦꯜ ꯈꯦꯠꯅꯕꯥ ꯑꯃꯅꯤ꯫ ꯑꯦꯞꯔꯣꯆ ꯈꯨꯗꯤꯡꯃꯛ ꯀꯗꯥꯏꯗꯥ ꯁꯤꯖꯤꯟꯅꯒꯗꯒꯦ? ꯑꯩꯒꯤꯗꯃꯛꯇꯗꯤ ꯊꯕꯛ ꯇꯧꯕꯥ ꯑꯐꯕꯥ ꯔꯨꯜ ꯑꯃꯥ ꯃꯈꯥꯗꯥ ꯄꯤꯔꯤ: ꯐꯣꯔꯝ ꯑꯗꯨ ꯃꯄꯨꯡ ꯐꯥꯅꯥ ꯃꯨꯠꯊꯠꯄꯥ ꯍꯥꯌꯅꯥ ꯈꯅꯕꯤꯌꯨ꯫ ꯑꯗꯣꯝꯅꯥ ꯀꯔꯤ ꯃꯥꯡꯍꯅꯒꯅꯤ?
ꯀꯔꯤꯒꯨꯝꯕꯥ ꯃꯁꯤ ꯁ꯭ꯛꯔꯤꯅꯁꯤꯡ ꯑꯣꯏꯔꯕꯗꯤ, ꯅꯍꯥꯛꯅꯥ ꯀꯝꯄꯣꯅꯦꯟꯇ-ꯗ꯭ꯔꯥꯏꯚꯟ ꯐꯣꯔꯃꯁꯤꯡ ꯄꯥꯝꯃꯤ꯫ ꯀꯔꯤꯒꯨꯝꯕꯥ ꯃꯁꯤ ꯕꯤꯖꯤꯅꯦꯁ ꯂꯣꯖꯤꯛ ꯑꯣꯏꯔꯕꯗꯤ, ꯊ꯭ꯔꯦꯁꯍꯣꯜꯗꯁꯤꯡ, ꯕ꯭ꯔꯥꯟꯆꯤꯡ ꯔꯨꯂꯁꯤꯡ, ꯑꯃꯁꯨꯡ ꯇꯁꯦꯡꯕꯥ ꯋꯥꯔꯦꯄꯁꯤꯡ ꯑꯦꯅꯀꯣꯗ ꯇꯧꯕꯥ ꯀꯟꯗꯤꯁꯅꯦꯜ ꯔꯤꯀꯣꯔꯗꯁꯤꯡꯒꯨꯝꯕꯥ ꯑꯣꯏꯔꯕꯗꯤ, ꯅꯍꯥꯛꯅꯥ ꯁ꯭ꯀꯤꯝ ꯏꯟꯖꯤꯟ ꯑꯃꯥ ꯄꯥꯝꯃꯤ꯫
ꯃꯇꯧ ꯑꯁꯨꯝꯅꯥ, ꯀꯔꯤꯒꯨꯝꯕꯥ ꯅꯍꯥꯛꯀꯤ ꯂꯝꯕꯤꯗꯥ ꯂꯥꯛꯂꯤꯕꯥ ꯑꯍꯣꯡꯕꯁꯤꯡ ꯑꯁꯤ ꯑꯌꯥꯝꯕꯅꯥ ꯂꯦꯕꯦꯜ, ꯐꯤꯜꯗ, ꯑꯃꯁꯨꯡ ꯂꯦꯑꯥꯎꯇꯀꯤ ꯃꯇꯥꯡꯗꯥ ꯑꯣꯏꯔꯕꯗꯤ, ꯑꯥꯔ.ꯑꯩꯆ.ꯑꯦꯐ.ꯅꯥ ꯅꯍꯥꯛꯀꯤ ꯁꯦꯕꯥ ꯐꯖꯅꯥ ꯇꯧꯒꯅꯤ꯫ ꯀꯔꯤꯒꯨꯝꯕꯥ ꯃꯈꯣꯌ ꯑꯁꯤ ꯇꯤꯀꯦꯠ ꯐꯥꯏꯜ ꯇꯧꯗꯅꯥ ꯅꯍꯥꯛꯀꯤ ꯑꯣꯄꯁ ꯅꯠꯠꯔꯒꯥ ꯂꯤꯒꯦꯜ ꯇꯤꯃꯅꯥ ꯅꯨꯃꯤꯗꯥꯡꯋꯥꯏꯔꯝ ꯑꯃꯗꯥ ꯑꯦꯗꯖꯁ꯭ꯠ ꯇꯧꯕꯥ ꯃꯊꯧ ꯇꯥꯕꯥ ꯀꯟꯗꯤꯁꯅꯁꯤꯡ, ꯑꯥꯎꯠꯀꯃꯁꯤꯡ, ꯑꯃꯁꯨꯡ ꯔꯨꯂꯁꯤꯡꯒꯤ ꯃꯇꯥꯡꯗꯥ ꯑꯣꯏꯔꯕꯗꯤ, ꯁꯔꯚꯦꯖꯦꯑꯦꯁꯀꯥ ꯂꯣꯌꯅꯅꯥ ꯁ꯭ꯀꯤꯝ ꯃꯣꯗꯦꯜ ꯑꯁꯤ ꯍꯦꯟꯅꯥ ꯄꯨꯀꯆꯦꯜ ꯁꯦꯡꯕꯥ ꯐꯤꯠ ꯑꯣꯏ꯫ ꯍꯥꯌꯔꯤꯕꯥ ꯑꯦꯞꯔꯣꯆ ꯑꯅꯤ ꯑꯁꯤ ꯑꯃꯒꯥ ꯑꯃꯒꯥ ꯇꯁꯦꯡꯅꯥ ꯀꯝꯄꯤꯇꯤꯁꯟ ꯇꯧꯗꯦ꯫ ꯃꯈꯣꯌꯅꯥ ꯇꯣꯉꯥꯟ ꯇꯣꯉꯥꯅꯕꯥ ꯀ꯭ꯂꯥꯁꯀꯤ ꯄ꯭ꯔꯣꯕ꯭ꯂꯦꯃꯁꯤꯡ ꯊꯦꯡꯅꯩ, ꯑꯃꯁꯨꯡ ꯊꯣꯛꯇꯕꯥ ꯌꯥꯕꯥ ꯑꯁꯣꯏꯕꯥ ꯑꯁꯤ ꯑꯦꯕꯁ꯭ꯠꯔꯦꯛꯁꯅꯕꯨ ꯂꯣꯖꯤꯀꯀꯤ ꯑꯔꯨꯝꯕꯥ ꯑꯗꯨꯒꯥ ꯃꯥꯟꯅꯗꯕꯥ ꯑꯁꯤꯅꯤ — ꯔꯨꯜ ꯁꯤꯁ꯭ꯇꯦꯝ ꯑꯃꯕꯨ ꯀꯝꯄꯣꯅꯦꯟꯇ ꯑꯃꯒꯨꯝꯅꯥ ꯂꯧꯕꯥ ꯃꯔꯃꯗꯤ ꯃꯗꯨ ꯈꯉꯅꯔꯕꯥ ꯈꯨꯠꯂꯥꯌꯅꯤ, ꯅꯠꯠꯔꯒꯥ ꯐꯣꯔꯝ ꯑꯃꯅꯥ ꯈꯣꯉꯊꯥꯡ ꯑꯍꯨꯃꯗꯥ ꯍꯦꯅꯒꯠꯂꯀꯈꯤ ꯑꯃꯁꯨꯡ ꯀꯟꯗꯤꯁꯅꯦꯜ ꯐꯤꯜꯗ ꯑꯃꯥ ꯐꯪꯈꯤꯕꯅꯥ ꯃꯔꯝ ꯑꯣꯏꯗꯨꯅꯥ ꯄꯣꯂꯤꯁꯤ ꯏꯟꯖꯤꯟ ꯑꯃꯥ ꯌꯧꯕꯥ꯫ ꯑꯩꯈꯣꯌꯅꯥ ꯃꯐꯝ ꯑꯁꯤꯗꯥ ꯁꯦꯃꯈꯤꯕꯥ ꯐꯣꯔꯝ ꯑꯁꯤ ꯈꯉꯅꯥ ꯈꯉꯅꯥ ꯉꯃꯈꯩꯒꯤ ꯃꯅꯥꯛꯇꯥ ꯐꯝꯂꯤ, ꯈꯦꯠꯅꯕꯥ ꯑꯗꯨ ꯐꯣꯡꯗꯣꯛꯅꯕꯥ ꯃꯇꯤꯛ ꯆꯥꯕꯥ ꯀꯝꯞꯂꯦꯛꯁ ꯑꯗꯨꯕꯨ ꯆꯥꯡꯗꯝꯅꯕꯥ ꯑꯁꯤ ꯔꯤꯒ ꯑꯣꯏꯕꯥ ꯐꯥꯑꯣꯔꯀꯄꯥ ꯐꯥꯑꯣꯕꯥ ꯌꯥꯝꯅꯥ ꯁꯥꯊꯤꯕꯥ ꯅꯠꯇꯦ꯫ ꯅꯍꯥꯛꯀꯤ ꯀꯣꯗꯕꯦꯖꯗꯥ ꯌꯥꯝꯅꯥ ꯂꯨꯕꯥ ꯑꯣꯏꯔꯀꯄꯥ ꯑꯌꯥꯝꯕꯥ ꯇꯁꯦꯡꯕꯥ ꯐꯣꯔꯃꯁꯤꯡ ꯑꯗꯨꯗꯤ ꯆꯞ ꯃꯥꯟꯅꯕꯥ ꯉꯃꯈꯩ ꯑꯗꯨꯒꯤ ꯃꯅꯥꯛꯇꯥ ꯐꯝꯂꯤꯕꯅꯤ, ꯑꯃꯁꯨꯡ ꯋꯥꯍꯪ ꯑꯁꯤ ꯃꯍꯧꯁꯥꯅꯥ ꯀꯅꯥꯒꯨꯝꯕꯥ ꯑꯃꯅꯥ ꯃꯈꯣꯌ ꯑꯁꯤ ꯇꯁꯦꯡꯅꯥ ꯀꯔꯤꯅꯣ ꯍꯥꯌꯕꯒꯤ ꯃꯃꯤꯡ ꯊꯣꯅꯈꯤꯕ꯭ꯔꯥ ꯍꯥꯌꯕꯁꯤ ꯈꯛꯇꯅꯤ꯫ ꯔꯤꯑꯦꯛꯇ ꯍꯨꯛ ꯐꯣꯔꯝ + ꯖꯣꯗ ꯁꯤꯖꯤꯟꯅꯧ:
ꯐꯣꯔꯃꯁꯤꯡ ꯑꯁꯤ ꯁꯤ.ꯑꯥꯔ.ꯌꯨ.ꯗꯤ.ꯗꯥ ꯌꯨꯝꯐꯝ ꯑꯣꯏ; ꯂꯣꯖꯤꯛ ꯑꯁꯤ ꯌꯥꯝꯅꯥ ꯂꯨꯕꯥ ꯑꯃꯁꯨꯡ ꯌꯨ.ꯑꯥꯏ.-ꯗ꯭ꯔꯥꯏꯕꯟ ꯑꯣꯏ; ꯏꯟꯖꯤꯅꯤꯌꯔꯁꯤꯡꯅꯥ ꯂꯃꯆꯠ-ꯁꯥꯖꯠ ꯄꯨꯝꯅꯃꯛ ꯃꯁꯥꯒꯤ ꯑꯣꯏꯖꯩ; ꯕꯦꯀꯑꯦꯟꯗ ꯑꯁꯤ ꯑꯆꯨꯝꯕꯒꯤ ꯍꯧꯔꯀꯐꯝ ꯑꯣꯏꯗꯨꯅꯥ ꯂꯩꯔꯤ꯫
ꯁꯔꯚꯦꯖꯦꯑꯦꯁ ꯑꯁꯤ ꯁꯤꯖꯤꯟꯅꯧ:
ꯐꯣꯔꯃꯁꯤꯡꯅꯥ ꯕꯤꯖꯤꯅꯦꯁꯀꯤ ꯋꯥꯔꯦꯄꯁꯤꯡ ꯑꯦꯅꯀꯣꯗ ꯇꯧꯏ; ꯔꯨꯂꯁꯤꯡ ꯑꯁꯤ ꯌꯨ.ꯑꯥꯏ.ꯗꯒꯤ ꯃꯅꯤꯡꯇꯝꯅꯥ ꯁꯦꯃꯒꯠꯂꯤ; ꯂꯣꯖꯤꯛ ꯑꯁꯤ ꯎꯕꯥ ꯉꯝꯕꯥ, ꯑꯣꯗꯤꯠ ꯇꯧꯕꯥ ꯌꯥꯕꯥ ꯅꯠꯠꯔꯒꯥ ꯚꯔꯖꯟ ꯑꯣꯏꯕꯥ ꯑꯣꯏꯒꯗꯕꯅꯤ; ꯅꯟ-ꯏꯟꯖꯤꯅꯤꯌꯔꯁꯤꯡꯅꯥ ꯂꯃꯆꯠ-ꯁꯥꯖꯠꯇꯥ ꯁꯥꯐꯨ ꯄꯤ; ꯆꯞ ꯃꯥꯟꯅꯕꯥ ꯐꯔꯝ ꯑꯗꯨ ꯃꯜꯇꯤꯄꯜ ꯐ꯭ꯔꯟꯇꯑꯦꯟꯗꯁꯤꯡꯒꯤ ꯃꯔꯛꯇꯥ ꯆꯠꯀꯗꯕꯅꯤ꯫