【问题标题】:Adding a functional component to useeffect method in react js在 react js 中添加一个功能组件到 useEffect 方法
【发布时间】:2021-08-16 18:56:01
【问题描述】:

我正在尝试在 useEffect 方法中添加示例 ModalPage 功能组件,但它显示错误:

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>
);
}

【问题讨论】:

  • 问题与useEffect无关,问题与useState有关,因为您不能在useEffect中使用
  • 还有其他方法可以拨打modal component
  • 是的,你可以在渲染函数中连接那些行,它会起作用

标签: reactjs mdbreact


【解决方案1】:

正如@Nisharg Shah 所说,您不能在useEffect 挂钩内调用&lt;ModalPage/&gt;。尝试将其更改为:

  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 "</>"
  }))

然后要渲染,您可以将其添加到您的 return 语句中:

    <MDBModalBody>
        {data.rows.map(row => <Edit/>)}
    </MDBModalBody>

【讨论】:

  • 如何定义行,在modalPage组件中编辑,因为它显示一个名为not defined的错误
  • 我进行了编辑以使其更清晰 - 它需要是 data.rows
  • 需要在模态组件中定义dataEdit/&gt;,它会抛出错误src\components\users\modalUser.js Line 19:14: 'data' is not defined Line 19: 36:未定义“编辑”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-24
  • 2018-05-05
  • 1970-01-01
  • 1970-01-01
  • 2021-04-15
  • 2020-01-06
  • 2021-01-19
相关资源
最近更新 更多