当前位置: 首页 > 知识库问答 >
问题:

提交redux表单值

红经亘
2023-03-14

我不熟悉react和redux技术。现在开始构建一个包含多个redux表单的应用程序。我们希望提交带有值的简单表单。

例如:登录表单

用户名:文本输入字段
密码:文本输入字段
提交按钮

在字段中输入值并单击submit按钮后,我想在object或json数据中获取用户名和密码字段值。。这样我就可以用POST方法将它存储到我的服务器上。

现在我们正在使用handleSubmit(),但数据不是作为对象提供的

共有3个答案

松正阳
2023-03-14

我将输入的名称作为要使用的键。然后每次输入更改时,我都会对传递给onChange函数的事件进行分解,并使用名称、值来更新状态。在表单提交时,确保使用preventDefault();以避免页面刷新。

import React, { Component } from 'react'

class FormExample extends Component {
    constructor(props){
        super(props)
        this.state = {
            formData: {}
        }
    }

    handleInputChange = ({ target: { name,value } }) => {
        this.setState({
            formData: {
                ...this.state.formData,
                [name]: value
            }
        })
    }

    handleFormSubmit = e => {
        e.preventDefault()
        // This is your object
        console.log(this.state.formData)
    }

    render() {
        return(
            <div>
                <Form 
                    handleSubmit={this.handleFormSubmit}
                    handleChange={this.handleInputChange}
                />
            </div>
        )
    }
}

const Form = ({ handleSubmit, handleChange }) => (
    <form onSubmit={handleSubmit}>
        <input onChange={handleChange} name="username" type="text" placeholder="Username" />
        <input onChange={handleChange} name="password" type="password" placeholder="Password" />
        <button>Submit</button>
    </form>
)

export default FormExample
齐意致
2023-03-14

如果您使用redux存储状态,则使用redux from,然后使用redux from

import React from 'react'
import {Field, reduxForm} from 'redux-form'
const SimpleForm = props => { 
    const {handleSubmit, submitting} = props return (
<form onSubmit={handleSubmit(e=>console.log('your form detail here', e))}>
    <div>
        <label>First Name</label>
        <div>
            <Field name="firstName" component="input" type="text" placeholder="First Name" />
        </div>
    </div>
    <div>
        <label>Last Name</label>
        <div>
            <Field name="lastName" component="input" type="text" placeholder="Last Name" />
        </div>
    </div>
    <div>
        <button type="submit" disabled={pristine || submitting}>Submit</button>        
    </div>
</form>
) }

export default reduxForm({ form: 'simple'})(SimpleForm)

去这里了解更多细节https://redux-form.com

令狐嘉禧
2023-03-14

1-处理输入值的最佳实践是使其受控。这意味着:

而不是

<input type='password' />

你可以:

<input 
  type='password' 
  value={password} 
  onChange={ event => myInputHandler( event.target.value ) } 
/>

该值可能来自您的状态,还原状态或作为道具等。处理函数根据存储位置的不同而不同。

我将给你举一个反应状态的例子:

<input 
  type='password' 
  value={this.state.password} 
  onChange={ event => this.setState({ password : event.target.value }) } 
/>

因此,每当有人键入时,您的onChange处理程序将被调用,以便您的反应状态将随着输入(event.target.value)而更新。

2-如果用户提交时需要这些值,那么您需要将这些输入字段包装在表单元素中,并附加一个onSubmit处理程序。

onSubmitHandler( event ){
   event.preventDefault()
   let password = this.state.password
   // use password or other input fields, send to server etc.
}

<form onSubmit={ event => this.onSubmitHandler(event) }> 
    <input 
      type='password' 
      value={this.state.password} 
      onChange={ event => this.setState({ password : event.target.value })    } 
    />
</form> 

希望你得到你需要的。

 类似资料:
  • 在学习了一些Redux和react的教程后,我刚刚开始尝试react,但在控制台中出现了一个错误: 警告:不能给无状态函数组件提供refs(请参见登录创建的FieldGroup中的ref“username”)。访问此引用的尝试将失败。 将表单字段输入值传递给“提交”按钮的正确方法是什么?这些值应该进入redux存储吗?在阅读了文档:https://reactjs.org/docs/refs-and

  • 我有一个使用redux表单的注册React组件,我的onSubmit基本上发送一个异步操作。我正在尝试使用Ezyme和Jest测试我的组件,方法是向我的分派添加一个间谍,并检查是否在模拟表单提交时调用分派。然而,我的测试失败了。 这是我的注册redux表单组件: 这是我的测试: 我的测试失败,出现以下错误:expect(jest.fn())。ToHaveBeenCall()预期已调用模拟函数。 请

  • 获取Form变量 通过Action的如下方法可以获取变量: GetSlice GetString GetInt GetBool GetFloat GetFile GetForm 自动映射 通常我们通过http.Request.Form来获得从用户中请求到服务器端的数据,这些数据一般都是采用name,value的形式提交的。xweb默认支持自动将这些变量映射到Action的成员中,并且这种映射支持子

  • Framework7 可以通过ajax自动提交 有两种自动提交方式: 当用户提交了表单 (点击了提交按钮) 或者当通过代码触发了 "submit" 事件 当用户更改了表单的内容,或者当通过代码触发了 "change" 事件 submit时提交表单数据 只需要添加 "ajax-submit" class 在form上,当submit时就会自动通过ajax发送表单数据 <form action="se

  • 大家要切记这一点: 在任何 Single Page App中,js代码都不会产生 一个传统意义的form表单提交!(这会引起整个页面的刷新) 所以,我们往往用事件来实现.(桌面开发思维) 假设,我们在远程有个接口,可以接受别人的留言: URL: http://siwei.me/interface/blogs/add_comment 参数: content: 留言的内容. 请求方式: POST 返回

  • 用户单击提交按钮或图像按钮时,就会提交表单。使用<input>或<button>都可以定义提交按钮,只要将其type 特性的值设置为"submit"即可,而图像按钮则是通过将<input>的type 特性值设置为"image"来定义的。因此,只要我们单击以下代码生成的按钮,就可以提交表单。 <!-- 通用提交按钮 --> <input type="submit" value="Submit For