reactjs - React+Redux 与 React-bootstrap > FormControl > 获取值

标签 reactjs redux react-bootstrap form-control

我正在使用react+redux 和react-bootstrap 组件。 我想将 FormControl 文本元素(电子邮件)的值传递给调度的 redux 操作,但我不知道该怎么做。

class LoginForm extends React.Component {
    render() {
        const email = React.findDOMNode(this.refs.email);

        return (
            <div>
                <Form horizontal>
                    <FormGroup controlId="formHorizontalEmail">
                        <Col componentClass={ControlLabel}>Email</Col>
                        <Col><FormControl type="email" ref="email"/></Col>
                    </FormGroup>

                    <FormGroup>
                        <Col>
                            <Button type="submit" block>Sign in</Button>
                        </Col>
                    </FormGroup>
                </Form>

                <Button onClick={() => this.props.doLogin(email, 'password')}>Login</Button>
            </div>
        )
    }
}

/**
 * Connect staff.
 */
const mapStateToProps = (state) => {
    return {
        ...
    };
};

const mapDispatchToProps = (dispatch) => {
    return {
        doLogin: (email, password) => dispatch(performLogin(email, password))
    };
};

export default connect(mapStateToProps, mapDispatchToProps)(LoginForm)

最佳答案

如何使用 React 读取 FormControl 的文本值的唯一一种方法(根据我的研究)是:

class LoginForm extends React.Component {
    handleOnChange = (event) => {
        this.setState({ [event.target.id]: event.target.value }, null);
    }

    render() {
        return (
            <div>
                <Form horizontal>
                    <FormGroup controlId="email">
                        <Col componentClass={ControlLabel}}>Email</Col>
                        <Col>
                            <FormControl type="email" placeholder="Email" onChange={this.handleOnChange}
                            />
                        </Col>
                    </FormGroup>

                    <FormGroup controlId="password">
                        <Col componentClass={ControlLabel} sm={2}>Password</Col>
                        <Col>
                            <FormControl type="password" placeholder="Password" onChange={this.handleOnChange} />
                        </Col>
                    </FormGroup>

                    <FormGroup>
                        <Col>
                            <Button onClick={() => this.props.doLogin(this.state.email, this.state.password)}>Submit</Button>
                        </Col>
                    </FormGroup>
                </Form>
            </div>
        )
    }
}

关于reactjs - React+Redux 与 React-bootstrap > FormControl > 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41029610/

相关文章:

javascript - 如何在没有中央服务器的情况下连接 Gun 来更新所有 React 客户端?

javascript - 如何从 React-Electron 项目创建可执行文件

javascript - React-Redux - setInterval() 中的状态值不正确

reactjs - 如何在 React/Redux 应用程序中指定状态的形状?

react-native - useSelector 导致多次重新渲染

javascript - 在React功能组件中,在鼠标悬停时加载react-bootstrap的下拉数据,而不是在鼠标单击时加载?

javascript - react : Will a state change cause an entire component to be redrawn?

javascript - 在两个对象之间画一条垂直线

css - 如何在 React Modal 中添加填充?

css - 如何设置 react-bootstrap Navbar 组件的图标栏样式?