Я пытаюсь предварительно заполнить текстовые поля уже существующими данными в объекте. Я использую компонентный рендерер, который построен из оператора switch следующим образом (я удалю другие случаи, чтобы сделать его более читабельным):
switch (data.type) {
case 'text':
return (
<div
key={data.index}
data-name={selection}
>
<FieldLabel
htmlFor={data.name}
label={data.value}
/>
<FormInput
type={data.type}
name={data.name}
placeholder={data.placeholder}
onChange={
e => props.onCommentsChange(
e,
data.structure,
data.rules
)}
value={selection}
err={props.error === 1
&& props.validationErrors !== null
&& data.name in props.validationErrors
? 1
: 0
}
/>
</div>
)
}
Значение ввода - selection
переменная, которая установлена следующим образом:
let selection;
const data = {
type: props.type,
options: props.options,
name: props.name,
value: props.value,
structure: props.structure,
rules: props.rules,
index: props.index,
placeholder: props.placeholder,
order: props.order,
date: props.date,
onDateChange: props.onDateChange,
onFocusChangeHandler: props.onFocusChangeHandler,
focused: props.focused,
};
const section = Object.entries(data.structure)[0][0];
Исходя из этого, я пытаюсь использовать оператор if, который циклически повторяется и устанавливает для переменной selection
значение:
if (props.usersCurrentSelection !== null && props.usersCurrentSelection !== undefined) {
console.log(props.usersCurrentSelection.data);
console.log(section);
console.log(props.usersCurrentSelection.data[section]);
if (section in props.usersCurrentSelection.data) {
Object.keys(props.usersCurrentSelection.data[section]).forEach(
item => {
let value = props.usersCurrentSelection.data[section][item];
console.log(value);
selection = value;
}
);
}
}
журналы консоли возвращают следующее:
Как вы можете видеть, он находит значение, соответствующее ключу в l oop. А поскольку текстовый компонент принимает переменную selection
в качестве значения, я не уверен, почему она не заполняется?
Спасибо за помощь.