fix(SplitText): resolve hydration mismatch by supporting dynamic tags #858
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
close #857
Description
This PR addresses a Hydration Mismatch Error that occurs when the
SplitTextcomponent is nested inside a parent<p>tag (e.g.,<p cannot be a descendant of <p>).Previously, the component relied on a hardcoded
switchstatement that defaulted to rendering a<p>tag, making it impossible to satisfy HTML nesting rules even when a user wanted to render it as aspan.Changes
I have refactored the
renderTagfunction to support Dynamic Tag Rendering (Polymorphic Component Pattern).switchstatement: Replaced it with a direct assignment (const Tag = tag;).tagprop is typed as a strict Union Type ('h1' | ... | 'span' | 'p'), there is no risk of invalid or unsafe HTML tags being rendered.'p'(via default props), preserving backward compatibility.Code Comparison
Before (Rigid Switch Case):
After (Dynamic & Type-Safe):