Выпадающее меню в таблице со значениями по умолчанию (React, Typescript, Material-UI)

#reactjs #typescript #drop-down-menu #material-ui

#reactjs #typescript #выпадающее меню #материал-пользовательский интерфейс

Вопрос:

Мне было интересно, как сделать мою таблицу с выпадающим меню со значением по умолчанию, выбранным на основе выбранных данных.

Таблица с предварительно выбранными значениями по умолчанию

Я хочу, чтобы моя таблица выглядела так.

Вот мой код для этих конкретных ячеек

     const { batchData, defaultVals } = useBatchData(updateObj);

    return (
    ...
    {batchData.map((item: IImportItem, index) => {
        return (<React.Fragment key={index}>
            <TableCell align='center'>
                <Select
                    defaultValue={defaultVals [index]}
                >
                    <MenuItem value="">
                        <em>None</em>
                    </MenuItem>
                    <MenuItem value={"val1"}>Val1</MenuItem>
                    <MenuItem value={"val2"}>Val2</MenuItem>
                </Select>
            </TableCell>
    ...   
 

Итак, я получаю данные и использую useState из react для обновления массива defaultVals, но я не могу понять, как его настроить, чтобы при загрузке и получении данных выпадающий список обновлялся.

If был установлен с самого начала следующим образом

const defaultVals : string[] = ["val1","val1","val1","val2]

Я знаю, что это работает, и мой массив в конечном итоге выглядит так, но для получения данных требуется несколько секунд, поэтому мой вопрос заключается в том, как я могу обновить и / или повторно отобразить выпадающие меню со значениями по умолчанию, как только я их получу.

Я надеюсь, что это очищается и спасибо за помощь.

Комментарии:

1. В конце концов, вы можете рассмотреть возможность установки defaultVals значения [] и рендеринга <TableCell /> только тогда, когда defaultVals оно не является пустым. Таким образом, вы избежите раздражающего повторного рендеринга или обновления.

2. Да!! Я даже не думал о кондициональном рендеринге. Спасибо, это было именно то, что мне было нужно. Очень признателен

3. На самом деле мне все еще нужно обновить всю страницу, потому что, если некоторые другие данные обновляются, автоматически выбранные параметры не синхронизируются с остальными данными