React状态在元素审查中更新但DOM未同步问题求助
问题解决:React中textarea状态更新但DOM内容不同步
你遇到的核心问题是textarea使用了非受控属性defaultValue,导致状态更新后DOM内容未同步。
问题原因
defaultValue是React中非受控组件的属性,仅在组件首次渲染时赋值一次。后续即使displayContent状态发生变化,textarea也不会重新读取这个值,所以DOM内容保持不变。
解决方案
将textarea的defaultValue替换为value,把它改成受控组件,这样组件会始终与displayContent状态保持同步:
修改前的textarea代码:
<textarea className="bg-[rgb(20,20,20)] p-2 pt-1 border-[1px] border-t-0 border-yellow-300 border-dashed text-yellow-300" placeholder={placeHolder} defaultValue={displayContent} onChange={props.updateContent} ></textarea>
修改后的textarea代码:
<textarea className="bg-[rgb(20,20,20)] p-2 pt-1 border-[1px] border-t-0 border-yellow-300 border-dashed text-yellow-300" placeholder={placeHolder} value={displayContent} onChange={props.updateContent} ></textarea>
额外注意点
确保props.updateContent函数能正确更新父组件中contentInside对应字段的值,这样切换语言时,props.contentInside.html/css/js能获取到最新内容,保证切换逻辑的完整性。
内容的提问来源于stack exchange,提问作者user20684440
相关产品推荐
相关产品推荐

