You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中如何更新textarea的值?遇双向绑定异常问题求助

问题分析与解决

问题原因

  • onChange事件取值错误:handlechange函数里错误使用event.target.content获取输入值,textarea的实际输入内容应该通过event.target.value获取,这导致手动输入时无法正确更新state,进而让textarea失去可编辑性。
  • defaultValue的局限性:defaultValue是React非受控组件的初始化属性,仅在组件首次渲染时生效,后续通过setState修改state不会同步到textarea,所以按钮点击后内容无法更新。

解决方法

修正handlechange函数的取值逻辑,确保state与textarea的value正确双向绑定,这样无论是手动输入还是按钮触发的state更新,都能同步到textarea:

"use client";

import { Button } from "@mui/material";
import { useState } from "react";

export default function TextAreaCreate() {
  const [content, setContent] = useState("<p></p><br/>");

  function paragraph() {
    setContent(content + "\n<p></p>");
  }
  
  // 修正取值为event.target.value,并指定正确的事件类型
  function handlechange(event: React.ChangeEvent<HTMLTextAreaElement>) {
    setContent(event.target.value);
  }

  return (
    <div>
      <textarea 
        name="content" 
        className="text-black border border-black w-full h-52" 
        value={content} 
        onChange={handlechange} 
        required
      ></textarea><br />
      <div className="m-5">
        <Button variant="contained" onClick={paragraph}>Paragraph</Button>
      </div>
    </div>
  );
}

额外建议:给handlechange的event参数加上React.ChangeEvent<HTMLTextAreaElement>类型,避免any类型带来的类型隐患。

内容的提问来源于stack exchange,提问作者Arya Suwandika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 06:27:33