React / Redux - просмотр массива в хранилище как объекта - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть массив на уровне root моего магазина Redux, но по какой-то причине мой взгляд рассматривает его как объект.

Фрагмент кода:

const notes = useSelector(state => state.notes)
...
            <p>Notes</p>
            <p>{typeof notes}</p>
            <p>{JSON.stringify(notes)}</p>
            <p>{JSON.stringify(notes[0])}</p>

Показывает как: enter image description here

Я просто хочу убедиться, что я не сумасшедший и, глядя на Redux docs , похоже, это должно быть приемлемо. Почему это может не сработать?

Редактировать

Я рад, что я не сумасшедший, наверное, мой следующий вопрос: почему я ничего не вижу при попытке:

export default function NotesTab() {
    const notes = useSelector(state => state.notes)
    return (
        <div className="flex flex-col w-full h-full justify-center items-center">
            {notes.forEach(note => (
                <p>Test</p>
            ))}
        </div>
    )
}

1 Ответ

2 голосов
/ 09 февраля 2020

Это ожидаемое поведение оператора typeof. Он сообщит массив как объект. Вы можете использовать Array.isArray() или Object.prototype.toString.call([]), что даст вам [object Array]. Или Object.constructor.name.

> const foo = [1,2];
typeof foo; // object
< "object"

> Object.prototype.toString.call(foo)
< "[object Array]"

> foo.constructor.name
< "Array"

Из вывода JSON.stringify(notes) вы можете видеть, что ваш запрос селектора избыточности возвращает массив, как вы и ожидали, так что вы должны быть в порядке. НТН

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