You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
if(components){Object.keys(components).forEach((c)=>{constcomp=components[c];if(typeofcomp.type==='function'||!comp.props||!comp.props.children||(translation.indexOf(`${c}/>`)<0&&translation.indexOf(`${c} />`)<0))return;// eslint-disable-next-line react/no-unstable-nested-components, no-inner-declarationsfunctionComponentized(){// <>{comp}</>returncreateElement(Fragment,null,comp);}// <Componentized />components[c]=createElement(Componentized);// ^ `components` may be frozen and then crash happens});}
Looks like Trans was going to modify the input prop components inplace. However, this may lead a crash while the components is readonly, aka frozen.
I encounter this issue by accidentally storing a React component with Trans by using useImmer hook. The useImmer hook will freeze all the states in production environment by default.
For exmaple:
constMyComponent=()=>{// The components props will be frozen in production environmentconst[Inner,setInner]=useImmer(<><Transcomponents={components}></Trans></>)return<Inner/>;}
So instead of using forEach to convert the input components may be it would be better to use map to create a new variable for later use.
The text was updated successfully, but these errors were encountered:
Jayatubi
changed the title
Trans component should NOT to modify the input props value.Trans component should NOT modify the input props value.
Mar 8, 2024
I've got an issue around this line in
TransWithoutContext.js
:react-i18next/src/TransWithoutContext.js
Line 380 in b274be7
Looks like
Trans
was going to modify the input propcomponents
inplace. However, this may lead a crash while thecomponents
isreadonly
, akafrozen
.I encounter this issue by accidentally storing a React component with Trans by using
useImmer
hook. TheuseImmer
hook will freeze all the states in production environment by default.For exmaple:
So instead of using
forEach
to convert the inputcomponents
may be it would be better to usemap
to create a new variable for later use.The text was updated successfully, but these errors were encountered: