Я пытаюсь отобразить форму для обновления при нажатии записи, новой форме записи при нажатии на кнопку выбора даты и ни после обновления, ни создания. У меня есть поддержка, которая динамически меняет свои значения на основе пользовательского ввода, который называется editMode
.3 условных представления в рендере
Вот скриншот того, что значения this.props.editMode
имеет из консоли с различными значениями, в дополнение к this.props.events
, чтобы показать, что это не пустая и даже один объект в массиве имеет соответствующий идентификатор к recordId
нашел его this.props.editMode
<Create />
компонент будет штукатурок, но <Update />
компонент не будет. Я только получаю предупреждение в консоли.
Предупреждение: Create изменяет управляемый ввод текста типа, который будет неконтролируемым. Элементы ввода не должны переключаться с управляемых на неконтролируемые (или наоборот). Решите, используя управляемый или неконтролируемый входной элемент для времени жизни компонента.
Ошибка.
import React from 'react';
import Create from './Event/Create';
import Update from './Event/Update';
class SideBar extends React.Component {
constructor() {
super();
this.renderEventForm = this.renderEventForm.bind(this);
}
renderEventForm() {
console.log(this.props.editMode);
console.log(this.props.events);
//if editMode state true, loop
// through events till until matching id
// place props into update component
if(this.props.editMode.state) {
const editRecordId = this.props.editMode.recordId;
return this.props.events.map((e) => {
if(e.Id === editRecordId) {
<div key={e.Id}>
<Update event={e} />
</div>
}
});
} else {
// render the create form
return(
<Create/>
)
}
}
render() {
return (
<div className="slds-p-bottom--small slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-1 slds-large-size--1-of-3">
{this.renderEventForm()}
</div>
);
}
}
export default SideBar;