Проверка выбора в reactjs

#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. Я имею в виду, что поле обязательно или показывает предупреждение о том, что поле равно нулю, прежде чем пытаться его вставить