reactjs 如何在react中传递表单提交时的输入值

t5fffqht  于 2023-02-08  发布在  React
关注(0)|答案(3)|浏览(138)

在提交时,我希望将用户输入的输入值传递给函数和该字段的警报值。这是我得到的代码,我卡住了,伙计们,我知道这是基本的东西,但我是新的React,所以有人可以进一步解释这一点。
下面是代码

class UserInput extends Component{
   onInputChange(event){
    alert(event.target.value);
   }

    render(){
        return (
            <div>
                <form noValidate autoComplete="off" onSubmit={this.onInputChange}>
                <TextField
                    id="outlined-name"
                    label="Image Search"
                    margin="normal"
                    variant="outlined"
                    style={{minWidth:'500px'}}
                    type="text"
                    /><br></br>
                    <Button 
                    variant="contained" 
                    color="primary"
                    type="submit"
                    >
                    Search
                    </Button>

                </form>

顺便说一句,这是材料用户界面文本字段和按钮元素。

ippsafx7

ippsafx71#

当您按下提交按钮时,您传递onInputChange函数的onSubmit属性被“触发”,它提供给您的是用户提交表单时的信息。
为了从表单中的输入传递值,您需要将它们存储在组件的状态中,并在用户修改输入时相应地更改它们。
您可以阅读更多关于here的信息。
以及解决您问题的方法:

class UserInput extends Component{
constructor(props) {
    super(props);
    this.state = {value: ''};

    this.handleChange = this.handleChange.bind(this);
this.onSubmit = this.onSubmit.bind(this);
  }

  handleChange(event) {
    this.setState({value: event.target.value});
  }

   onSubmit(event){
    alert('Form submitted:' + this.state.value);
   }

    render(){
        return (
            <div>
                <form noValidate autoComplete="off" onSubmit={this.onSubmit}>
                <TextField
                    onChange={this.handleChange}
                    id="outlined-name"
                    label="Image Search"
                    margin="normal"
                    variant="outlined"
                    style={{minWidth:'500px'}}
                    type="text"
                    /><br></br>
                    <Button 
                    variant="contained" 
                    color="primary"
                    type="submit"
                    >
                    Search
                    </Button>

                </form>
jtw3ybtb

jtw3ybtb2#

为了访问input的值,您需要将其保存到组件的状态中。
我建议您使用带有React钩子的函数组件,而不是类组件,因为带有函数组件的代码看起来要干净得多:

function UserInput(){
  const [text, setText] = useState('');

  const onInputChange = (event) => {
   setText(event.target.value);
  }

  const onSubmit = () => {
    console.log(text);
  }

  return (
      <div>
          <form noValidate autoComplete="off" onSubmit={onSubmit}>
          <TextField
              id="outlined-name"
              label="Image Search"
              margin="normal"
              variant="outlined"
              style={{minWidth:'500px'}}
              type="text"
              onChange={onInputChange}
              /><br></br>
              <Button 
                variant="contained" 
                color="primary"
                type="submit"
              >
              Search
              </Button>

          </form>
     </div>
  );
}
nkkqxpd9

nkkqxpd93#

使用功能组件

导出默认函数FormSubmit(){

const [text, setText] = useState('')

    console.log("Text: ", text)

    const sendMessage = () => {

            // Insert Your Logic Here using "text" variable

    }

    return (

            <div>

                    <input type="text" value={text} onChange={(e) => setText(e.target.value)} />

                    <button onClick={() => sendMessage()}>Send Text</button>

            </div>

    )

}

相关问题