Forms 如何在React中获取提交的表单值?

Forms 如何在React中获取提交的表单值?,forms,reactjs,Forms,Reactjs,这是我的反应组件 import React, { Component } from 'react'; import categories from './categories.json' import './content.css' export default class Content extends Component { constructor(props) { super(props) this.state = { se

这是我的反应组件

import React, { Component } from 'react';
import categories from './categories.json'
import './content.css'

export default class Content extends Component {
    constructor(props) {
        super(props)
        this.state = {
            searchText: '',
            categories
        }
    }

    render() {
        return(
            <div className="content">
            <form className="searchform" onSubmit={this.search}>
                <input type="text" name="keyword" id="searchbox" placeholder="Search String"></input>
                <select name="categories" id="searchcategories">
                <option defaultValue="" defaultChecked>Select a category</option>
                {this.state.categories.map(x => 
                    <option key={x.value} value={x.value}>{x.name}</option>
                )}</select>
                <input type="submit" value ="Search" id="searchsubmit" />
            </form>
            </div>
        )
    }

    search(e) {
        console.log(e.target)
        e.preventDefault();
    }
}
单击submit按钮时,将调用my函数搜索。但是,如何获取提交的值

e、 target为我提供了整个表单DOM HTML
e、 target.value未定义

在React中,表单组件有两个选项:

通过将受控零部件的值prop设置为状态变量,将其值链接到零部件状态。在这种情况下,您可以使用组件的this.state来检查它们的值


非受控组件可以在实例化时将引用附加到其父组件。。。通常像这样ref={input=>this.input=input}。调用函数搜索时,可以检查该值的引用,即此.input.value。

在React中,表单组件有两个选项:

通过将受控零部件的值prop设置为状态变量,将其值链接到零部件状态。在这种情况下,您可以使用组件的this.state来检查它们的值


非受控组件可以在实例化时将引用附加到其父组件。。。通常像这样ref={input=>this.input=input}。调用函数搜索时,您可以检查该值的引用,即此.input.value。

您需要为此使用状态变量。 例如,每当文本更改时,将this.state.searchText与元素同步。然后定义一个回调机制,如-

onSubmit={()=>{
console.log('My searchBox's latest value is : ',this.state.searchText);
}}

记住,在React中,我们遵循单向流。因此,我们总是从道具或状态获取数据,不需要进行DOM遍历

您需要为此使用状态变量。 例如,每当文本更改时,将this.state.searchText与元素同步。然后定义一个回调机制,如-

onSubmit={()=>{
console.log('My searchBox's latest value is : ',this.state.searchText);
}}

记住,在React中,我们遵循单向流。因此,我们总是从道具或状态获取数据,不需要进行DOM遍历

我明白了。但是,考虑到性能和效率,哪一个更适合使用此react?通常应使用受控组件。只有在真正需要时才使用非受控组件,这通常是避免的!受控组件工作正常,这些链接很棒!问题,我是否需要为所有表单元素创建不同的handleChange?我明白了。但是,考虑到性能和效率,哪一个更适合使用此react?通常应使用受控组件。只有在真正需要时才使用非受控组件,这通常是避免的!受控组件工作正常,这些链接很棒!问题,我需要为我的所有表单元素创建一个不同的handleChange吗?我在inputsearchbox中添加了value={this.state.searchText},但是现在我不能在文本框中键入使用我在inputsearchbox中添加了value={this.state.searchText},但是现在我不能在文本框中键入使用为什么向下投票?为什么向下投票?