我正在尝试在onClick
事件后清除输入字段。
我正在使用react-bootstrap
库,虽然有getValue()
方法,但没有setValue(value)
方法。
我偶然发现了discussion。
我没有完全明白他们建议什么,以便在提交后简单地清理表格。
毕竟,如果我使用简单的HTML <input>
而不是react-bootstrap
,我可以通过元素ref
获取节点,并将其值设置为空字符串或其他内容。
什么被认为是清理我的react-bootstrap <Input />
元素的反应方式?
答案 0 :(得分:3)
将状态存储在React组件中,通过props设置元素值,通过事件回调获取元素值。这是一个例子:
以下是直接从他们的文档中获取的示例。我刚刚添加了clearInput()
方法,向您展示只需更新组件状态即可清除输入。这将触发重新渲染,这将导致输入值更新。
const ExampleInput = React.createClass({
getInitialState() {
return {
value: ''
};
},
validationState() {
let length = this.state.value.length;
if (length > 10) return 'success';
else if (length > 5) return 'warning';
else if (length > 0) return 'error';
},
handleChange() {
// This could also be done using ReactLink:
// http://facebook.github.io/react/docs/two-way-binding-helpers.html
this.setState({
value: this.refs.input.getValue()
});
},
// Example of how you can clear the input by just updating your state
clearInput() {
this.setState({ value: "" });
},
render() {
return (
<Input
type="text"
value={this.state.value}
placeholder="Enter text"
label="Working example with validation"
help="Validation is based on string length."
bsStyle={this.validationState()}
hasFeedback
ref="input"
groupClassName="group-class"
labelClassName="label-class"
onChange={this.handleChange} />
);
}
});
答案 1 :(得分:3)
对于我目前正在做的事情,我并不认为有必要通过setState / Flux来控制Input组件的值(也就是说我不想处理所有的样板)...所以这是我所做的一切。希望React的神能原谅我。
pageNum = (int)(selector.xpath('//input[@name="mp"]')[0].attrib['value'])
答案 2 :(得分:0)
您也可以使用ReactDOM:
<FormControl
componentClass="select"
ref="sStrike">
<option value="-">Select…</option>
<option value="1">1</option>
<option value="2">2</option>
</FormControl>
现在,另一个FormControl会触发onChange={handleChange}
,在该处理程序中,您只需标识ref
并设置为默认值:
ReactDOM.findDOMNode(this.refs.sStrike).value = '-';
这会将选择框设置为&#39;默认&#39;值。
答案 3 :(得分:0)
如果您使用FormControl作为输入,并且您想使用ref来更改/获取值,则使用inputRef而不是ref
<FormControl inputRef={input => this.inputText = input} .../>
并使用它来获取/更改其值:
this.inputText.value
答案 4 :(得分:0)
这对我有用,以防其他人正在寻找答案:D
您可以通过使用来访问 react-bootstrap 的值
console.log(e.target.form.elements.fooBar.value)
您可以使用
清除它们e.target.form.elements.fooBar.value = ""
import React from 'react';
import {Button, Form} from 'react-bootstrap';
export default function Example(props) {
const handleSubmit = (e) => {
// Handle submitting the form
}
const resetSearch = (e) => {
e.preventDefault();
e.target.form.elements.fooBar.value = ""
}
render() {
return (
<Form onSubmit={handleSubmit} onReset={resetSearch} >
<Form.Control type="input" name="fooBar" />
<Button type="submit"> Submit </Button>
<Button onClick={resetSearch} type="submit" > Reset </Button>
</Form>
);
}
}