首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应:如何选择第一选择选择选项

反应:如何选择第一选择选择选项
EN

Stack Overflow用户
提问于 2020-08-07 15:27:38
回答 2查看 153关注 0票数 0

在我的react应用程序中,我有一个选择下拉输入。但是,每当我想在提交表单后的表单填充过程中维护我的选择选项的Mpesa(通过不单击字段来维护)时,我就会得到一个错误。

模式(引脚):“”不是一个有效的选择。‘

除非我单击另一个选项,然后重新选择第一个选项,否则onChange不会选择第一个选项。

表单组件

代码语言:javascript
复制
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);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-07 15:37:09

类中使用componentDidMount将initail值设置为状态。

代码语言:javascript
复制
 componentDidMount(){
  this.setState({mode: this.state.payment_options[0] })
}

在函数使用useEffect的情况下

代码语言:javascript
复制
const [mode, setMode] = useState("");
useEffect(()=>{
   setMode(payment_options[0]);
},[])
票数 3
EN

Stack Overflow用户

发布于 2020-08-07 15:42:02

因为您使用mode状态变量来跟踪下拉列表。您只需用想要的值初始化它的状态。

代码语言:javascript
复制
state = {
  invoiceOwner: "",
  product: "",
  quantity: "",
  mode: "Mpesa",
  status: "",
  payment_made: "",
  payment_options: ["Mpesa", "Cash", "Bank", "Cheque"],
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63304815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档