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

MUI TextareaAutosize经styled包装后输入字符需重点击的问题求助

MUI TextareaAutosize配合styled时输入失焦问题的解决

问题成因

你把StyledTextarea的定义放在了Hello组件内部,每次输入文本触发setText更新状态时,组件会重新渲染,这时候内部定义的StyledTextarea会被重新创建——对React来说,这相当于一个全新的组件类型。React会卸载之前的文本框,重新挂载新的,自然就会导致焦点丢失,必须重新点击才能继续输入。

另外你提供的问题代码里,styled的定义还存在语法错误(缺少闭合的括号和分号),这也可能加重组件渲染的异常。

解决方法

把StyledTextarea的定义移到组件外部,让它只被创建一次,不会随组件重渲染而重复生成,同时补全语法错误。

修正后的代码

import { useState } from 'react';
import TextareaAutosize from '@mui/material/TextareaAutosize';
import styled from '@mui/material/styles/styled';

// 将styled组件定义在组件外部,确保只创建一次
const StyledTextarea = styled(TextareaAutosize)(({ theme }) => `
  border-radius: 12px 12px 0 12px;
`);

const Hello = ()=> {
    const [text, setText] = useState('');
    const handleTextChange = (event) => {
        setText(event.target.value);
    };

    return (
        <div>
            <StyledTextarea
                value={text}
                onChange={handleTextChange}
                autoCorrect='false'
                minRows={15}
            />
        </div>
    );
};

export default Hello;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 21:28:24