Reactjs `defaultValue`和onChange`阻止状态更改更新渲染

Reactjs `defaultValue`和onChange`阻止状态更改更新渲染,reactjs,Reactjs,我有一个多选项卡面板,可以根据所选选项卡的组合更改文本区域。为了使此面板中的更改提供自动更新,我提供了onChange侦听器,但这会导致defaultValue设置出现问题,并且在状态更改时不会更改textarea的内容 常量道具={ “x”:{ “标签”:{ “文本”:“Ex” } }, “y”:{ “标签”:{ “文本”:“为什么” } } } 类TodoApp扩展了React.Component{ 构造器{ 超级作物; 此.state={ 选项卡:“x”, 子选项卡:“一” } } ge

我有一个多选项卡面板,可以根据所选选项卡的组合更改文本区域。为了使此面板中的更改提供自动更新,我提供了onChange侦听器,但这会导致defaultValue设置出现问题,并且在状态更改时不会更改textarea的内容

常量道具={ “x”:{ “标签”:{ “文本”:“Ex” } }, “y”:{ “标签”:{ “文本”:“为什么” } } } 类TodoApp扩展了React.Component{ 构造器{ 超级作物; 此.state={ 选项卡:“x”, 子选项卡:“一” } } getActiveTabtab{ 如果this.state.tab==tab返回“活动”; 否则返回; } GetActiveSubAbsubtab{ 如果this.state.subtab==subtab返回“活动”; 否则返回; } getOneTab{ 回来 {console.loge}}> ; } 获取内容{ 如果this.state.subtab==“一”{ 返回这个.getOneTab; }否则{ } } 渲染{ 回来 this.setState{tab:'x'}}role=tab>x this.setState{tab:'y'}}role=tab>y this.setState{subtab:'One'}}role=tab>One this.setState{subtab:'Two'}}role=tab>Two {this.getContent} } } ReactDOM.render、document.querySelectorapp 在textarea字段中使用value而不是defaultValue。
原因:defaultValue仅指定最初创建输入时的值:也就是说,不可能进行更新。

如果我使用value设置文本字段的文本,它将在状态更改时更新文本,但会删除用户更改文本字段的功能。实际上,您需要通过更新onChange事件处理程序中的文本状态来处理textarea字段中的任何更改。因此,它不适用于静态道具方法-如果通过道具获取文本值,则需要在父级中更改它-或者创建自己使用的文本状态。如果文本状态为空,则返回到props值。