gpt4 book ai didi

reactjs - 如何在 React 15 中创建默认为空的受控输入

转载 作者:行者123 更新时间:2023-12-03 13:18:46 25 4
gpt4 key购买 nike

我在想要控制的文本输入方面遇到问题,但它需要支持空值。这是我的组件:

import React, { Component, PropTypes } from 'react';
import { ControlLabel, FormControl, FormGroup } from 'react-bootstrap';

const propTypes = {
id: PropTypes.string.isRequired,
label: PropTypes.string,
onChange: PropTypes.func,
upperCaseOnly: PropTypes.bool,
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
};

export default class UppercaseTextField extends Component {
constructor(props) {
super();
this.state = { value: props.value };
this.onChange = () => this.onChange();
}

onChange(e) {
let value = e.target.value;
if (this.props.upperCaseOnly) {
value = value.toUpperCase();
}
this.setState({ value });
this.props.onChange(e);
}

render() {
return (
<FormGroup controlId={id}>
<ControlLabel>{this.props.label}</ControlLabel>
<FormControl
type="text"
onChange={this.onChange}
defaultValue={this.props.value}
value={this.state.value}
/>
</FormGroup>
);
}
}

UppercaseTextField.propTypes = propTypes;

首次安装时,props.value 通常(尽管并非总是)设置为 ''。这让 React 15 不高兴,因为 value='' 使得值被丢弃,所以 React 认为这是一个不受控制的输入,即使它有一个 onChange。

该组件可以工作,但我不喜欢在控制台中收到此警告:

Warning: FormControl is changing a controlled input of type text to be uncontrolled. Input elements should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled input element for the lifetime of the component. More info: http://facebook.github.io/react/docs/forms.html#controlled-components

这在 0.14.x 中运行良好,没有任何警告,但现在 15 似乎不喜欢它。如何清理它以保留功能但消除警告?

最佳答案

确保this.state.value挂载时未定义。您可以通过设置 this.state = {value: props.value || ''}; 在构造函数中执行此操作或通过制作 props.value必需的属性。

关于reactjs - 如何在 React 15 中创建默认为空的受控输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37175048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com