У меня есть массив объектов, который я выводил в виде входных данных. Эти входные данные должны быть обновлены, значения представлены для отображения изменений. Я могу утешить ключ и новое значение, но получаю ошибку: metafields.map
не является функцией.
Мой код выглядит следующим образом:
class EditMetafields extends React.Component {
constructor(props) {
super(props);
this.state = { metafields: [] }
}
componentDidMount() {
// retrieving data from the db to populate metafields
metafields = [
{id: 0, key: "key0", value: "value0"},
{id: null, key: "keyNull", value: "valueNull"},
{id: 2, key: "key2", value: "value2"},
]
this.setState({ metafields: metafields });
}
render() {
const { metafields } = this.state;
const formFields = metafields.map((props) =>
<TextField
key={props.id}
label={props.key}
id={prop.id}
value={props.value}
changeKey={props.id} onChange={(val) =>{
console.log(props.key, val); //returns accurate output i.e. "key0 value0a" when 'a' key pressed
this.setState({ metafields: { ...this.state.metafields, [props.key]: val } }) //TypeError: metafields.map is not a function after 'a' key pressed
}
} />
);
return (
<Page>
<Form>
{formFields}
</Form>
</Page>
)
}
}
Когда это было массив объектов, содержащий одну пару ключ / значение, которую я смог соединить и изменить без проблем, но теперь, когда мне нужно присоединить идентификаторы и многое другое к объекту, React расстраивается из-за Objects are not valid as a React child. If you meant to render a collection of children, use an array instead.
Мне нужно работать с объектами, содержащими идентификатор, пространство имен, ключ и значение, и выводить каждый объект на вход в форме, которую можно обновить, но я не уверен, правильно ли я использую React, назначая мета-поля реквизитам. Ссылки на соответствующие статьи или точки в правильном направлении будет высоко ценится!