Я изучаю React, и я нахожу решение, предлагаемое для сопоставления объекта итеративно в тегах jsx, может быть более интуитивным. Вместо
Object.keys(myObj).map(...)
я хотел бы написать что-то вроде:
myObj.keys.map(...)
Я прочитал статью здесь Ричардом Бовелом, но для этого требуется создать новый объект и скопировать - вставлен в codePen, но я не вижу, как это можно сделать с такими объявлениями, как
state={...}
или
myObject={...}
Не могли бы вы быть более преданными?
Вы хотите просто заменить Object.keys ()? Затем используйте записи объектов Es8 и итерации по этому массиву.
Если вы хотите оптимизировать код из codePen, то в какой части вы говорите? Поиск правильной электронной почты? Тогда я бы предложил использовать ie. findIndex () и проверяет, возвращает ли он -1.
Вы можете достичь object.keys, выполнив следующие действия:
const myObject = {
someProp: 'test',
someSecondProp: 'test2',
}
Object.defineProperty(
myObject,
'keys',
{
enumerable: false,
get: function() {
return Object.keys(this)
},
}
)
myObject.keys // ['someProp', 'someSecondProp']
myObject.keys.map(...)
Определение этого нового свойства может быть выполнено в функции вашего собственного создания. Хотя я бы не стал беспокоиться об этом только для этого типа коротких рук, так как я доволен использованием Object.keys(). В качестве альтернативы вы можете определить функцию keys, которая в значительной степени просто выполняет Object.keys.
function keys(object) {
return Object.keys(object)
}
keys(myObject).map(...)
Изменить: Как указывалось мне в комментариях, вы также можете вытащить keys - из объекта Object.
const { keys } = Object