Reactjs onSubmit不适用于多行文本输入

Reactjs onSubmit不适用于多行文本输入,reactjs,material-ui,Reactjs,Material Ui,我使用的是一个texfield,当按下enter键时,它会清除输入的文本,它会触发onSubmit函数,但由于某些原因,当Multline设置为true时,onSubmit不起作用 import React, { useRef } from "react"; import "./styles.css"; import TextField from "@material-ui/core/TextField"; export defaul

我使用的是一个texfield,当按下enter键时,它会清除输入的文本,它会触发onSubmit函数,但由于某些原因,当Multline设置为true时,onSubmit不起作用

import React, { useRef } from "react";
import "./styles.css";
import TextField from "@material-ui/core/TextField";

export default function App() {
  const inputRef = useRef();

  const addMessage = e => {
    inputRef.current.value = "";
  };
  return (
    <form onSubmit={addMessage}>
      <TextField
        // multiline="true"
        inputRef={inputRef}
        multiline="true"
        id="filled-basic"
        label="Filled"
        variant="filled"
      />
    </form>
  );
}
import React,{useRef}来自“React”;
导入“/styles.css”;
从“@material ui/core/TextField”导入TextField;
导出默认函数App(){
const inputRef=useRef();
const addMessage=e=>{
inputRef.current.value=“”;
};
返回(
);
}

我还添加了一个codesandbox,其中的代码使其更简单

Material UI component TextField为多行使用布尔值。设置multiline={true}或只包括multiline,如中所示:

<TextField
  inputRef={inputRef}
  multiline
  id="filled-basic"
  label="Filled"
  variant="filled"
/>

有关更多信息,请参见:

根据物料界面的文档:

多行属性将文本字段转换为textarea或textarea AutoSize

  • multiple
    prop提供一个布尔值

  • 要在按下[code>enter键时提交表单,请提供一个[code>onKeydown,如下所示

  • 要在表单提交后自动调整大小,可以使用
    ref
    并将
    高度设置为
    auto

  • 导出默认函数App(){
    const inputRef=useRef();
    const addMessage=e=>{
    控制台日志(“hi”);
    inputRef.current.getElementsByTagName(“textarea”)[0]。value=“”;
    };
    const handleKeyDown=事件=>{
    
    if(event.which==13){//Multline正在工作,问题是当按下enter键时,它不会调用onSubmit,而是转到一个新行。这很完美,谢谢你的解释,只是好奇按下enter键时,文本字段不会立即调整大小,它仍然很大,有没有办法修复@gdhupdated答案…使用相同的代码和框链接(仅刷新页面)感谢您的回复,非常感谢,您能向我解释一下您是如何解决resizeno问题的……我们可以使用
    ref
    调整大小,并将
    height
    调整为auto…回答中的第3个点。还在代码中留下一些注释。感谢您的回答,这非常有用