【发布时间】:2021-06-14 10:17:12
【问题描述】:
我正在用 ReactJS 开发一个应用程序,我有以下代码:
import React, { useState, useEffect } from "react";
import {Form } from "react-bootstrap";
import Select from "react-select";
const App = () => {
const [validated, setValidated] = useState(false);
const [select, setSelect] = useState({
name: "",
category: ""
});
const handleChange = e => {
const {name, value} = e.target;
setSelect(prevState => ({
...prevState,
[name]: value
}));
};
const [data, setData] = useState([]);
...
/* get data */
...
const categories = data.map((item) => ({ value: item.id, label: item.Name }));
return (
<div className="app">
<Form noValidate validated={validated}>
<Form.Row>
<Form.Group as={Col} md="4" controlId="validationCustom01">
<Form.Label>Name</Form.Label>
<Form.Control
required
name="name"
type="text"
placeholder="Name"
onChange={handleChange}
/>
<Form.Control.Feedback type="invalid">Check!</Form.Control.Feedback>
<Form.Control.Feedback>Ok!</Form.Control.Feedback>
</Form.Group>
<Form.Group as={Col} md="4" controlId="validationCustom02">
<Form.Label>Category</Form.Label>
<Form.Control
required
name="category"
as="select"
placeholder="Category"
onChange={handleChange}
>
<Select
options={categories}
defaultValue={true}
onChange={handleChange}
name="category"
id="search-select"
/>
</Form.Control>
<Form.Control.Feedback type="invalid">Check!</Form.Control.Feedback>
<Form.Control.Feedback>Ok!</Form.Control.Feedback>
</Form.Group>
</Form.Row>
</Form>
</div>
);
}
export default App;
我希望能够将react-select 与react-bootstrap 一起使用,如上所示。
我需要Select 组件来适应代码,以便我可以使用react-bootstrap 验证并选择/输入所有数据以便能够插入它,我需要通过如下方式,例如:
console.log(select);
{name: "", category: ""}
name: "Name"
category: "Category"
__proto__: Object
我该怎么做?我需要它,否则我必须使用
<Form.Control
required
name="category"
as="select"
placeholder="Category"
onChange={handleChange}
>
<option hidden value="" selected>Select</option>
{
categories.map(elem => {
return <option ... >Name</option>
})
}
</Form.Control>
并且选择仍然没有样式。
【问题讨论】:
-
说实话,并不完全清楚你想要完成什么。如果您可以将代码放入沙盒中,然后指向您想要添加/修复的特定行为,那就太棒了。
-
感谢您的回答,我在那里做到了:codesandbox.io/s/elegant-fast-jz5ng?file=/src/App.js
-
我需要的是 Select 与
Form.Control兼容,以便它呈现并能够在同一对象中获取选定的数据。 -
沙盒当前已损坏。这是您无法解决的问题还是您打算解决它?
-
是我修复的:
<Form.Control required name="category" as="select" placeholder="Category" onChange={handleChange} > <option hidden value="" selected> Select </option> {categories.map((elem) => { return <option>Name</option>; })} </Form.Control>
标签: javascript reactjs styles react-bootstrap react-select