javascript - 组件中每个元素的不同 handleChange() 函数? ( react

标签 javascript reactjs redux

我想知道这是否是一种好的做法,或者我是否应该以不同的方式设计这个应用程序。我特别关心这两个“handleChange”函数,想知道是否可以通过某种方式对其进行简化。当然,我们也欢迎其他建议。

用户添加.js:

import React, {Component} from 'react';
import {bindActionCreators} from 'redux';
import {connect} from 'react-redux';
import {createUser} from '../actions/index'

class UserCreate extends Component {

    constructor(props, context) {
        super(props, context);
        this.state = {
            inputText: 'Helluuuu'
        }
    }

    handleChangeFirstName(event) {
        console.log(event.target.value);
        this.setState({
            inputTextFirstName: event.target.value
        })
    }

    handleChangeLastName(event) {
        console.log(event.target.value);
        this.setState({
            inputTextLastName: event.target.value
        })
    }

    render() {
        return (
            <div>
                <h2> Add User </h2>

                <table className="userTable">
                <tbody>
                <tr>
                    <td>First Name:</td>
                    <td>Last Name:</td>
                </tr>

                <tr>
                    <td>
                        <input type="text"
                            placeholder="Hello!"
                            value={this.state.inputTextFirstName}
                            onChange={this.handleChangeFirstName.bind(this)}/>
                    </td>
                    <td>
                        <input type="text"
                            placeholder="Hello!"
                            value={this.state.inputTextLastName}
                            onChange={this.handleChangeLastName.bind(this)} />
                    </td>
                </tr>
                </tbody>
                </table>


                <button onClick={() =>this.props.createUser()}>Submit</button>

            </div>
        );
    }
}

function mapStateToProps(state) {
    return {
        user: state.activeUser
    };
}

function matchDispatchToProps(dispatch){
    return bindActionCreators({createUser: createUser}, dispatch);
}

export default connect(mapStateToProps, matchDispatchToProps)(UserCreate);

最佳答案

当然,您可以将其减少到只有一个 handleChange 方法,并且可以使用该方法使用任意数量的输入字段。

此外,我认为您不需要为此使用任何第三方软件包。

在你的渲染方法中:

<input 
  type="text"
  name="firstName"
  placeholder="First Name!"
  value={this.state.firstName}
  onChange={this.handleChange.bind(this)}
/>

<input 
  type="text"
  name="lastName"
  placeholder="Last Name!"
  value={this.state.lastName}
  onChange={this.handleChange.bind(this)}
/>

处理更改方法

handleChange(e) {
   this.setState({ [e.target.name] : e.target.value });
}

更干净。

关于javascript - 组件中每个元素的不同 handleChange() 函数? ( react ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40302344/

相关文章:

javascript - mapStateToProps 和变量未定义 React-Redux

javascript - Bootstrap 4 选项卡中的传单 map 未更新

javascript - 立即将差异和随机日期转换为秒

reactjs - "react-hot-loader/babel"破坏了我的构建——为什么需要它?

reactjs - 如何使用react-spring顺序执行两个动画?

javascript - 在reactjs中返回带有更新数组的整个对象

javascript - 单击添加和删除类

javascript - 自动宽度属性不适用于数据表

javascript - 为什么会出现错误 : 'should not push route with duplicated key' with NavigationStateUtils in React Native?

javascript - react-redux Provider 在 IE 10/11 中给出错误 “onlyChild must be passed a children with exactly one child”