UseEffect и Redux: не загружать данные таблицы после выполнения действия приведения - PullRequest
0 голосов
/ 02 мая 2020

Я использую библиотеку компонентаact-data-table lib и есть столбец, который отвечает за включение и отключение пользователей.

столбец:

const columns = [

    {
            cell: row =>
                <Toggle
                    checked={row.enable}
                    handleChange={() => props.handleUserStatus(row.enable, row.id)}
                />,
            width: '120px'
        }
]

HandleUserStatus - это действие, которое вызывает API, и пока все не будет в порядке ...

export const handleUserStatus = (status, id) => {


    if (status) {
        return dispatch => {
            httpPut(`account/user/${id}/disable`)
                .then(resp => {
                    return [
                        dispatch(getDataTable()),
                    ]
                })
                .catch(error => {
                    console.log(error)
                })
        }
    }
    else {
        return dispatch => {
            httpPut(`account/user/${id}/enable`)
                .then(resp => {
                    return [
                        dispatch(getDataTable())
                    ]
                })
                .catch(error => {
                    console.log(error)
                })
        }
    }
}

После вызова API вызывается другое действие, чтобы снова загрузить данные таблиц ... но ничего не происходит.

Я использую useEffect для выполнения getDataTable для получения данных таблицы при загрузке страницы следующим образом:

useEffect(() => {
    setTimeout(() => {
        props.getDataTable()
        setloadingDataTable(false)
    }, 600);
    //eslint-disable-next-line
},[]);

Мне нужно передать пустой массив, потому что функция getDataTable вызывается в цикле ... Как я могу отобразить страницу снова после выполнения HandleUserStatus?

...