#javascript #reactjs #api #validation #select
#javascript #reactjs #API #проверка #выберите
Вопрос:
Я разрабатываю приложение в React.JS
Мне нужно иметь возможность проверить Select
его перед отправкой или проверкой в функции вставки.
Код:
const App = () => {
const [item, setItem] = useState([])
const [category, setCategory] = useState([])
const categories = category.map(elem => ({
value: elem.id,
label: elem.cat,
}));
const [category_select, setCategorySelect] = React.useState(null);
function handleChangeCategory(value) {
setCategorySelect(value);
}
useEffect(() => {
getItems()
}, [])
useEffect(() => {
getCategories()
}, [])
const getItems = async () => {
const response = await axios.get(REQUEST_1)
setItem(response.data)
}
const getCategories = async () => {
const response = await axios.get(REQUEST_2)
setCategory(response.data)
}
const addItems = () => {
axios.post(`${REQUEST_1}`, {cat: category_select.value});
};
const body = () => {
return item amp;amp; item.map((elem,j) => {
return (
<tr key={elem.id}>
<td><span>{elem.cat}</span></td>
</tr>
)
})
}
return (
<>
<div>
<div>
<div>
<div>
<NoSsr>
<Select
classes={classes}
styles={selectStyles}
inputId="category"
TextFieldProps={{
label: 'Category',
InputLabelProps: {
htmlFor: 'category',
shrink: true,
},
placeholder: 'Category...',
}}
options={categories}
components={components}
value={category}
onChange={handleChangeCategory}
/>
</NoSsr>
<span>Select</span>
</div>
<div>
<label>amp;nbsp;</label>
<span onClick={addItems}></span>
</div>
</div>
<div>
<div>
<div>
<table>
<thead>
<tr>
<th>
<span>Category</span>
</th>
</tr>
</thead>
<tbody>
{body()}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</>
)
}
Я использую react-select
y material-ui
.
Идея состоит в том, чтобы проверить Select
, есть ли в, выбран ли какой-либо параметр перед отправкой value
.
Как мне добавить это требование в addItems = () => {...}
или в <Select ... />
?
Как я могу это сделать, предложения?
Ответ №1:
Вы могли бы просто добавить эту логику в addItem
const addItems = () => {
if(category_select) return axios.post(`${REQUEST_1}`, {cat: category_select.value});
};
Я предполагаю, что вы хотите больше интерактивности, чтобы вы могли представить addItemError
const [addItemError, setAddItemError] = React.useState(null);
const addItems = () => {
if(!category_select) return setAddItemError("You cant add an empty value")
axios.post(`${REQUEST_1}`, {cat: category_select.value});
};
// in jsx
// ....
<span onClick={addItems}></span>
{addItemError amp;amp; <span>Your message here</span>}
Ответ №2:
что вы подразумеваете под проверкой…просто проверьте, прежде чем отправлять, у вас есть это в «category_select» … или я не понимаю вашего вопроса
Комментарии:
1. Я имею в виду, что поле обязательно или показывает предупреждение о том, что поле равно нулю, прежде чем пытаться его вставить