#reactjs #mdbreact
Вопрос:
Я пытаюсь добавить пример ModalPage
функционального компонента в метод useEffect, но он показывает ошибку:
const [data, setData] = React.useState('');
useEffect(() => {
const requestOptions = {
method: 'GET',
headers: {
'Content-Type': 'application/json'
},
};
fetch('http://localhost:4000/api/users/getUserDetails', requestOptions)
.then(response => response.json())
.then(res => {
const data = {
columns: [{
label: 'First Name',
field: 'FirstName',
sort: 'asc',
width: 150
},
{
label: 'Last Name',
field: 'LastName',
sort: 'asc',
width: 270
},
{
label: 'Email',
field: 'Email',
sort: 'asc',
width: 200
},
{
label: 'Phone Number',
field: 'PhoneNumber',
sort: 'asc',
width: 100
},
{
label: 'Edit',
field: 'Edit',
width: 100
},
],
rows: res.isUser.map((data) => ({
FirstName: data.firstName,
LastName: data.LastName,
Email: data.email,
PhoneNumber: data.phoneNumber,
edit : <ModalPage/>
}))
}
setData(data);
})
}, [])
это модальная страница
export default function ModalPage() {
const [show, setShow] = React.useState(false);
function toggle () {
setShow({
show: !show
});
}
return (
<MDBContainer>
<MDBBtn onClick={toggle}>Modal</MDBBtn>
<MDBModal isOpen={show} toggle={toggle}>
<MDBModalHeader toggle={toggle}>MDBModal title</MDBModalHeader>
<MDBModalBody>
(...)
</MDBModalBody>
<MDBModalFooter>
<MDBBtn color="secondary" onClick={toggle}>Close</MDBBtn>
<MDBBtn color="primary">Save changes</MDBBtn>
</MDBModalFooter>
</MDBModal>
</MDBContainer>
);
}
Комментарии:
1. Проблема не связана с
useEffect
проблемой связана сuseState
тем, что вы не можете использовать <ModalPage /> вuseEffect
2. есть ли какой-либо другой способ позвонить в
modal component
3. Да, вы можете объединить эти строки в функции визуализации, и это будет работать
Ответ №1:
Как сказал @Nisharg Shah, вы не можете звонить <ModalPage/>
внутри useEffect
крючка. Попробуйте изменить его на этот:
rows: res.isUser.map((data) => ({
FirstName: data.firstName,
LastName: data.LastName,
Email: data.email,
PhoneNumber: data.phoneNumber,
Edit: ModalPage // Note the removal of the tags "</>"
}))
Затем для визуализации вы можете добавить это в свое заявление о возврате:
<MDBModalBody>
{data.rows.map(row => <Edit/>)}
</MDBModalBody>
Комментарии:
1. как определить строки, отредактируйте в компоненте modalPage, потому что он показывает ошибку, называемую
not defined
2. Я отредактировал, чтобы было понятнее — это должны быть данные.строки
3. нужно определить
data
иEdit/>
в модальном компоненте , он выдает ошибку srccomponentsusersmodalUser.js Строка 19:14: «данные» не определена Строка 19:36: «Редактировать» не определена