Недопустимая опора типа `string` в реакции - PullRequest
0 голосов
/ 30 ноября 2018

В моем MuiTable у меня есть:

        <MuiTable
        padding="dense"
        data={pageData}
                    pagination={{ 
                        count: data ? data.length : 0,
                        rowsPerPage: count,
                            page: page - 1,
                            rowsPerPageOptions: [10, 25, 100, 500],
                            onChangePage: this.handlePageChange,
                            onChangeRowsPerPage: this.handleCountChange, 
                        }}

и

const mapStateToProps = (state , props) => {
const search: any = deparamSearch(props.location.search);

return {
    orders: (state.orders.list || []),
    page: Number.parseInt(search.page || 1),
    count: search.count || 10,
};
};

const mapDispatchToProps = (dispatch) => ({
    fetchOrders: (values, search?) => dispatch(fetchOrders(values, search)),
});

, и я получаю предупреждение:

Warning: Failed prop type: Invalid prop `rowsPerPage` of type `string` supplied to `TablePaginationActions`, expected `number`

похоже, что count является строкой, а яЯ делаю эти вычисления без ошибок:

const data = orders;
const start = count * (page - 1);
const pageData = data && data.slice(start, start + count);

и в моем бэкэнд-файле:

public abstract Optional<Integer> count();
public abstract Optional<Integer> page();

Я не могу понять, почему count является строкой.

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Ну, отсчет идет из этой строки:

const search: any = deparamSearch(props.location.search);

props.location.search, скорее всего, будет строкой.Вам нужно установить его на Number, например:

count: Number(search.count) || 10

Кроме того, вы можете сделать '5' * 3 и это вернет 15. Это потому, что JavaScript пытается привести строку '5' на номер из-за оператора *

0 голосов
/ 30 ноября 2018

Что-то не так с вашей базой данных.У вас могут быть данные в виде строки, вы можете подтвердить, что это число:

rowsPerPage: +count // +'3' ==> 3

Sidenote: В реакции, если тип реквизита - число, то это должно быть число, но не число в формате строки, например '34'недействительно.

...