在我的react应用程序中,我有一个选择下拉输入。但是,每当我想在提交表单后的表单填充过程中维护我的选择选项的Mpesa(通过不单击字段来维护)时,我就会得到一个错误。
模式(引脚):“”不是一个有效的选择。‘
除非我单击另一个选项,然后重新选择第一个选项,否则onChange不会选择第一个选项。
表单组件
class FormInvoice extends Component {
state = {
invoiceOwner: "",
product: "",
quantity: "",
mode: "",
status: "",
payment_made: "",
payment_options: ["Mpesa", "Cash", "Bank", "Cheque"],
};
onChange = (e) =>
this.setState({
[e.target.name]: e.target.value,
});
render() {
return (
<div className="App container">
<Modal isOpen={this.props.newInvoiceModal} scrollable={true}>
<ModalBody>
<FormGroup>
<Label for="title">Product</Label>
<Input name="product" value={product} onChange={this.onChange} />
</FormGroup>
<FormGroup>
<Label for="title">Mode</Label>
<Input <==== Option
type="select"
name="mode"
value={mode}
onChange={this.onChange}
>
{this.state.payment_options.map((option, index) => (
<option key={index} value={option}>
{option}
</option>
))}
</Input>
</FormGroup>
</ModalBody>
<ModalFooter>
<button onClick={this.onSubmit} className="btn btn-primary">
Submit
</button>{" "}
<Button color="secondary" onClick={this.props.toggleModal}>
Cancel
</Button>
</ModalFooter>
</Modal>
</div>
);
}
}
export default connect(null, { addInvoiceData })(FormInvoice);发布于 2020-08-07 15:37:09
类中使用componentDidMount将initail值设置为状态。
componentDidMount(){
this.setState({mode: this.state.payment_options[0] })
}在函数使用useEffect的情况下
const [mode, setMode] = useState("");
useEffect(()=>{
setMode(payment_options[0]);
},[])发布于 2020-08-07 15:42:02
因为您使用mode状态变量来跟踪下拉列表。您只需用想要的值初始化它的状态。
state = {
invoiceOwner: "",
product: "",
quantity: "",
mode: "Mpesa",
status: "",
payment_made: "",
payment_options: ["Mpesa", "Cash", "Bank", "Cheque"],
};https://stackoverflow.com/questions/63304815
复制相似问题