Невозможно получить длину массива в React - PullRequest
0 голосов
/ 25 октября 2019

Я получаю список заказов в моем приложении React / Redux. Пользователь вводит слово в компонент «Поиск», и список заказов должен отображаться ниже в компоненте «Список». Внутри компонента «Список» I console.log (orders), он возвращает пустой массив (по умолчанию состояние является пустым массивом), когда я отправляю поисковый запрос, он возвращает массив из 5 элементов.

[] 
orders: (5) [{…}, {…}, {…}, {…}, {…}]

Однако, если я console.log (orders.length), я получаю «0», но как только я отправляю поиск, он возвращает неопределенное значение. Почему? Разве это не массив?

[]
0
{orders: Array(5)}
undefined

Компонент списка:

export class List extends React.Component {
  render() {
    const { orders } = this.props;
    console.log(orders.orders);

    return <div>List Component</div>;
  }
}

const mapStateToProps = state => ({
  orders: state.orders.ordersArr
});

Редуктор:

  const initialState = {
     name: '',
     ordersArr: []
  };
  export default (state = initialState, action) => {
     switch (action.type) {
        case 'FETCH_ORDERS':
          return { ...state, ordersArr: action.payload };

Индекс редукторов

export default combineReducers({
  orders: ordersReducer
});

Действие:

export const fetchOrders = () => async dispatch => {
  const response = await work.get(`/needtoorders`);

  dispatch({ type: 'FETCH_ORDERS', payload: response.data });
};

Ответы [ 3 ]

1 голос
/ 25 октября 2019

Кажется, что orders - это объект, также состоящий из свойства с именем orders. И это свойство состоит из массива.

Попробуйте вместо этого:

console.log(orders.orders.length) 

Учитывая, что orders и orders.orders могут быть неопределенными, вы можете попробовать это тоже.

if (orders && orders.orders && orders.orders.length > 0) {
  console.log(orders.orders.length)
}
0 голосов
/ 25 октября 2019

Можете ли вы попробовать это

if (orders && orders.orders && orders.orders.length > 0) {
  console.log(orders.orders.length)
}

Надеюсь, это поможет

0 голосов
/ 25 октября 2019

Кажется, initialState содержит ordersArr, не содержит orders

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...